Detalii evaluare #44169264

Rezumat problemă

#1648 Diez

Negrimon a găsit într-o culegere această problemă #legendară: peste un şir de caractere de lungime N, alcătuit din litere mici ale alfabetului englez, se efectuează M operaţii de următoarele tipuri:

  1. Se inserează în şir caracterul x, pe poziţia p, după deplasarea cu o poziţie la dreapta a caracterelor situate pe poziţiile mai mari sau egale cu p. Dacă valoarea p este egală cu lungimea şirului, x este alipit la finalul şirului.
  2. Se răspunde cu 1 dacă secvenţa de litere care începe la poziţia q1 şi are lungimea lg coincide literă cu literă, cu secvenţa care începe la poziţia q2 şi are aceeaşi lungime lg şi se răspunde cu 0 în caz contrar. Este posibil ca cele două secvenţe să se suprapună complet sau parţial în şirul din care ele fac parte.

Fiind dat un şir de N litere mici şi o listă de M operaţii, să se afişeze răspunsurile la operaţiile de tip 2, respectând ordinea din succesiunea de operaţii date.

Urmasii lui Moisil, 2016

Detalii

Problema Diez Operații I/O diez.in/diez.out
Limita timp 2 secunde Limita memorie Total: 128 MB / Stivă 8 MB
Id soluție #44169264 Utilizator Adrian Statescu (thinkphp)
Fișier diez.cpp Dimensiune 7.77 KB
Data încărcării 05 Iulie 2023, 13:00 Scor / rezultat 100 puncte

Evaluare


Mesaj compilare

In file included from /usr/include/c++/4.8/cassert:43:0,
                 from diez.cpp:4:
diez.cpp: In function 'int main()':
diez.cpp:122:36: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         assert(i < power_base.size());

                                    ^
diez.cpp:128:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         assert(i < aib0.size());

                              ^
diez.cpp:136:42: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             assert(pos < final_line.size());

                                          ^
diez.cpp:143:40: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             assert(j < final_line.size());

                                        ^
diez.cpp:157:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         assert(i < aib1.size());

                              ^
diez.cpp:174:42: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             assert(st1 < final_line.size());

                                          ^
diez.cpp:175:42: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             assert(st2 < final_line.size());

                                          ^
diez.cpp: In function 'void UpdateHashSegmentTree(int, int, int, int)':
diez.cpp:226:45: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     assert(0 < node && node < seg_tree.size());

                                             ^
diez.cpp:227:43: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     assert(0 < st && st < final_line.size());

                                           ^
diez.cpp:228:54: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     assert(0 < en && st < en && en < final_line.size());

                                                      ^
diez.cpp: In function 'void BuildSegmentTree(int, int, int)':
diez.cpp:249:45: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     assert(0 < node && node < seg_tree.size());

                                             ^
diez.cpp:250:43: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     assert(0 < st && st < final_line.size());

                                           ^
diez.cpp:251:43: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     assert(0 < en && en < final_line.size());

                                           ^
diez.cpp:256:43: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     assert(0 < st && st < final_line.size());

                                           ^
diez.cpp:257:54: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     assert(0 < en && st < en && en < final_line.size());

                                                      ^
diez.cpp: In function 'int main()':
diez.cpp:83:35: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
     freopen("diez.in", "r", stdin);

                                   ^
diez.cpp:84:37: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
     freopen("diez.out", "w", stdout);

                                     ^
diez.cpp:89:29: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d %d\n", &N, &M);

                             ^
diez.cpp:92:36: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%s", (initial_line + 1));

                                    ^
diez.cpp:95:27: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d", &type);

                           ^
diez.cpp:98:31: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
             scanf("%d", &pos1);

                               ^
diez.cpp:104:31: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
             scanf("%d", &pos1);

                               ^
diez.cpp:106:31: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
             scanf("%d", &pos2);

                               ^
diez.cpp:108:29: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
             scanf("%d", &lg);

                             ^

Rezultat evaluare

Test Timp Mesaj evaluare Scor posibil Scor obținut
1 0 secunde OK. 4 4
2 0 secunde OK. 4 4
3 0.012 secunde OK. 4 4
4 0.18 secunde OK. 4 4
5 0.528 secunde OK. 4 4
6 0.552 secunde OK. 4 4
7 0.308 secunde OK. 4 4
8 0.388 secunde OK. 4 4
9 0.584 secunde OK. 4 4
10 0.52 secunde OK. 4 4
11 0.584 secunde OK. 4 4
12 0.448 secunde OK. 4 4
13 0.588 secunde OK. 4 4
14 0.616 secunde OK. 4 4
15 0.428 secunde OK. 4 4
16 0.564 secunde OK. 4 4
17 0.592 secunde OK. 4 4
18 0.412 secunde OK. 4 4
19 0.424 secunde OK. 4 4
20 0.436 secunde OK. 4 4
21 0.56 secunde OK. 4 4
22 0.604 secunde OK. 4 4
23 0.508 secunde OK. 4 4
24 0.592 secunde OK. 4 4
25 0.516 secunde OK. 4 4
Punctaj total 100

Cum funcționează evaluarea?

www.pbinfo.ro permite evaluarea a două tipuri de probleme:

  • probleme la care rezolvarea presupune scrierea unui program complet
  • probleme la care rezolvarea presupune scrierea unei secvențe de program - câteva instrucțiuni, o listă de declarații, una sau mai multe funcții, etc.

Problema Diez face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:

  • Programul sursă este compilat folosind compilatorul corespunzător. Dacă în urma compilării se obțin erori sau avertismente, acestea sunt afișate în această pagină.
  • Dacă programul a fost compilat, executabilul obținut va fi rulat, furnizându-i-se unul sau mai multe seturi de date de intrare, în concordanță cu restricțiile specifice problemei. Pentru fiecare set de date se obține un anumit punctaj, în raport cu corectitudinea soluției tale.

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ă.