#4420
perioade
De ziua lui, Florin a primit un șir de caractere periodic și infinit. Perioada lui are lungime n
și conține doar litere mici ale alfabetului englez. Deoarece este curios, el vrea să își personalizeze șirul primit în diverse moduri. Pentru a face asta, el vă dă q
operații care se realizează pe șirul dat, operații de două tipuri, după cum urmează:
1 x y
: Litera de pe poziția x
devine egală cu y
, unde y
este o literă mică a alfabetului englez.2 a b c
: Florin vrea să afle câte litere egale cu c
există între pozițiile [a, b]
din șirul de caractere.Fiindcă nu vrea să strice periodicitatea șirului foarte mult, Florin vă garantează că pentru toate operațiile de actualizare, valorile pozițiilor modificate au în reprezentarea binară cel mult k
biți egali cu 1
. Scrieţi un program care, dându-se șirul de caractere și actualizările, răspunde la interogări.
Urmașii lui Moisil 2023, clasele XI-XII
Problema | perioade | Operații I/O |
![]() perioade.in /perioade.out
|
---|---|---|---|
Limita timp | 2 secunde | Limita memorie |
Total: 256 MB
/
Stivă 64 MB
|
Id soluție | #50690519 | Utilizator | |
Fișier | perioade.cpp | Dimensiune | 5.27 KB |
Data încărcării | 21 Aprilie 2024, 14:57 | Scor / rezultat | 100 puncte |
perioade.cpp:8:0: warning: ignoring #pragma optimize GCC [-Wunknown-pragmas] #pragma optimize GCC ("Ofast") ^ perioade.cpp: In function 'int main()': perioade.cpp:162:66: warning: narrowing conversion of '(((int)val) + -97)' from 'int' to 'short int' inside { } [-Wnarrowing] queries.push_back(query{1, a, -1, -1, (short int)val - 'a'}); ^ perioade.cpp:167:65: warning: narrowing conversion of '(((int)val) + -97)' from 'int' to 'short int' inside { } [-Wnarrowing] queries.push_back(query{2, -1, a, b, (short int)val - 'a'}); ^
Test | Timp | Mesaj evaluare | Scor posibil | Scor obținut | ||
---|---|---|---|---|---|---|
1 | 0 secunde | OK. | 10 | 10 | ||
2 | 0.004 secunde | OK. | 10 | 10 | ||
3 | 0.004 secunde | OK. | 10 | 10 | ||
4 | 0.004 secunde | OK. | 10 | 10 | ||
5 | 0.004 secunde | OK. | 20 | 20 | ||
6 | 0.26 secunde | OK. | 20 | 20 | ||
7 | 1.908 secunde | OK. | 20 | 20 | ||
Punctaj total | 100 |
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema perioade 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ă.