#1203
KSecv
Fie un vector V
cu N
elemente și un număr K
. Vectorul V
trebuie împărțit în exact K
subsecvențe nevide, astfel încât fiecare element din vector să aparțină exact unei subsecvențe. Această împărțire trebuie făcută astfel încât maximul șmecheriei fiecărei subsecvențe să fie cât mai mic. (Această problemă concepe greșit sistemul de șmecherie și valoare). Șmecheria fiecărei subsecvențe se definește ca fiind parte întreagă din ((Vmax – Vmin + 1) / 2)
, unde Vmax
este valoarea maximă din subsecvență, iar Vmin
este valoarea minimă.
Vectorul V
de N
elemente va fi generat în felul următor: se dă un număr M
și 2
vectori A
și B
de lungime M
(indexați de la 0
la M - 1
). Fiecare element i
, 0 ≤ i < N
, din vectorul V
va fi calculat cu următoarea formulă: V[i] = (A[i % M] ^ B[i / M])
, unde x % y
reprezintă restul lui x
la împărțirea cu y
, x / y
reprezintă câtul împărțirii lui x
la y
și x ^ y
reprezintă rezultatul operației xor
(sau exclusiv pe biți) dintre x
și y
.
ONI 2015, Clasele XI-XII
Problema | KSecv | Operații I/O |
ksecv.in /ksecv.out
|
---|---|---|---|
Limita timp | 0.2 secunde | Limita memorie |
Total: 128 MB
/
Stivă 16 MB
|
Id soluție | #50603169 | Utilizator | |
Fișier | ksecv.cpp | Dimensiune | 1.88 KB |
Data încărcării | 16 Aprilie 2024, 20:25 | Scor / rezultat | 100 puncte |
ksecv.cpp: In function 'int main()': ksecv.cpp:53:36: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result] freopen("ksecv.in", "r", stdin); ^ ksecv.cpp:54:38: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result] freopen("ksecv.out", "w", stdout); ^ ksecv.cpp:56:32: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%d%d%d", &n, &k, &m); ^ ksecv.cpp:59:29: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%lld", &a[i]); ^ ksecv.cpp:62:29: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%lld", &b[i]); ^
Test | Timp | Mesaj evaluare | Scor posibil | Scor obținut | ||
---|---|---|---|---|---|---|
0 | 0 secunde | OK. | 10 | 10 | ||
1 | 0 secunde | OK. | 10 | 10 | ||
2 | 0.008 secunde | OK. | 10 | 10 | ||
3 | 0.008 secunde | OK. | 10 | 10 | ||
4 | 0.028 secunde | OK. | 10 | 10 | ||
5 | 0.024 secunde | OK. | 10 | 10 | ||
6 | 0.036 secunde | OK. | 10 | 10 | ||
7 | 0.036 secunde | OK. | 10 | 10 | ||
8 | 0.036 secunde | OK. | 10 | 10 | ||
9 | 0.036 secunde | OK. | 10 | 10 | ||
Punctaj total | 100 |
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema KSecv 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ă.