#3778
Ian este un copil pasionat de muzică, așa că părinții săi i-au cumpărat de ziua lui un pian. Pianul lui Ian este mai special, acesta are N clape. Întrucât pianul nu este nou, clapele se mișcă mai greu, astfel apăsarea celei de-a i-a clape durează t[i] secunde. Deoarece Ian este foarte nerăbdător, s-a hotarât să repare clapele pianului pentru ca apăsarea unei clape să fie cât mai rapidă. Acesta poate selecta două clape vecine i și i+1 ce necesită t[i], respectiv t[i+1] secunde pentru a fi apăsate și le lustruiește. În urma lustruirii, cele două clape vor necesita doar cmmdc(t[i],t[i+1]) secunde pentru apăsarea fiecăreia. Practic, o operație va efectua următoarea transformare asupra clapelor: t[i] = t[i + 1] = cmmdc(t[i], t[i+1]).
Lot informatică 2021
| Problema | Pian | Operații I/O |
pian.in/pian.out
|
|---|---|---|---|
| Limita timp | 0.3 secunde | Limita memorie |
Total: 64 MB
/
Stivă 8 MB
|
| Id soluție | #58829275 | Utilizator | |
| Fișier | pian.cpp | Dimensiune | 3.80 KB |
| Data încărcării | 17 August 2025, 22:35 | Scor/rezultat | 100 puncte |
pian.cpp: In function 'void print_sol()': pian.cpp:40:34: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for (int i = 0; i < sol.size(); ++i) { ^ pian.cpp: In function 'int valid(int)': pian.cpp:84:39: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for (int j = 0; j < d[i].size(); ++j) { ^ pian.cpp:92:39: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for (int j = 0; j < d[i].size(); ++j) { ^ pian.cpp:101:49: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for (int j = 0; j < d[i - len + 1].size(); ++j) { ^ pian.cpp: In function 'int main()': pian.cpp:135:22: warning: unused variable 'last' [-Wunused-variable] int st, dr, mij, last, pos_l, pos_r, rez; ^ pian.cpp:111:35: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result] freopen("pian.in", "r", stdin); ^ pian.cpp:112:37: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result] freopen("pian.out", "w", stdout); ^ pian.cpp:114:29: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%d %d\n", &t, &n); ^ pian.cpp:115:23: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%d", &v[1]); ^ pian.cpp:118:27: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%d", &v[i]); ^ pian.cpp:153:26: warning: 'pos_r' may be used uninitialized in this function [-Wmaybe-uninitialized] for (int i = pos_r + 1; i <= n; ++i) { ^ pian.cpp:135:28: warning: 'pos_l' may be used uninitialized in this function [-Wmaybe-uninitialized] int st, dr, mij, last, pos_l, pos_r, rez; ^
| Test | Timp | Mesaj evaluare | Scor posibil | Scor obținut | ||
|---|---|---|---|---|---|---|
| 0 | 0 secunde | OK | 3 | 3 | ||
| 1 | 0 secunde | OK | 3 | 3 | ||
| 2 | 0 secunde | OK | 3 | 3 | ||
| 3 | 0 secunde | OK | 3 | 3 | ||
| 4 | 0 secunde | OK | 3 | 3 | ||
| 5 | 0 secunde | OK | 3 | 3 | ||
| 6 | 0 secunde | OK | 3 | 3 | ||
| 7 | 0.004 secunde | OK | 3 | 3 | ||
| 8 | 0.008 secunde | OK | 3 | 3 | ||
| 9 | 0.012 secunde | OK | 3 | 3 | ||
| 10 | 0 secunde | OK | 3 | 3 | ||
| 11 | 0 secunde | OK | 3 | 3 | ||
| 12 | 0 secunde | OK | 3 | 3 | ||
| 13 | 0 secunde | OK | 3 | 3 | ||
| 14 | 0 secunde | OK | 3 | 3 | ||
| 15 | 0 secunde | OK | 3 | 3 | ||
| 16 | 0 secunde | OK | 3 | 3 | ||
| 17 | 0.004 secunde | OK | 3 | 3 | ||
| 18 | 0 secunde | OK | 3 | 3 | ||
| 19 | 0.004 secunde | OK | 3 | 3 | ||
| 20 | 0.004 secunde | OK | 4 | 4 | ||
| 21 | 0.012 secunde | OK | 4 | 4 | ||
| 22 | 0.012 secunde | OK | 4 | 4 | ||
| 23 | 0.024 secunde | OK | 4 | 4 | ||
| 24 | 0.028 secunde | OK | 4 | 4 | ||
| 25 | 0.056 secunde | OK | 4 | 4 | ||
| 26 | 0.092 secunde | OK | 4 | 4 | ||
| 27 | 0.096 secunde | OK | 4 | 4 | ||
| 28 | 0.12 secunde | OK | 4 | 4 | ||
| 29 | 0.148 secunde | OK | 4 | 4 | ||
| Punctaj total | 100 | |||||
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema Pian face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:
Suma punctajelor acordate pe testele utilizate pentru verificare este 100. Astfel, soluția ta poate obține cel mult 100 de puncte, caz în care se poate considera corectă.