#2454
Fie un vector v
sortat crescător cu N
elemente naturale nenule distincte pe care nu le cunoaştem, dar pe care ne propunem să le determinăm. Având la dispoziţie acest vector v
, cu ajutorul următorului algoritm de căutare binară putem răspunde la queryuri de forma: Dându-se un număr X
şi un interval [a, b]
se cere să se determine cel mai mic element mai mare decât X
aflat în intervalul determinat de indicii a
şi b
, interval din vectorul v
. Se cunosc paşii pe care algoritmul de cautare binară i-a urmat pentru diferite valori ale tripletului (X, a, b)
.
Dându-se N
(lungimea vectorului), Q
(numărul de query-uri apelate) şi cele Q
query-uri, să se determine vectorul iniţial. Dacă există mai multe soluţii se va afişa soluţia minim lexicografică. Dacă nu există soluţie se va afişa valoarea -1
.
ONI 2018 clasa a IX-a
Problema | bsrec | Operații I/O |
![]() bsrec.in /bsrec.out
|
---|---|---|---|
Limita timp | 0.3 secunde | Limita memorie |
Total: 128 MB
/
Stivă 32 MB
|
Id soluție | #12627270 | Utilizator | |
Fișier | bsrec.c | Dimensiune | 1.58 KB |
Data încărcării | 07 Decembrie 2018, 12:58 | Scor / rezultat | 100 puncte |
bsrec.c: In function 'main': bsrec.c:31:11: warning: ignoring return value of 'fscanf', declared with attribute warn_unused_result [-Wunused-result] fscanf(f, "%d\n",&T); ^ bsrec.c:34:15: warning: ignoring return value of 'fscanf', declared with attribute warn_unused_result [-Wunused-result] fscanf(f, "%d %d\n", &n, &q); ^ bsrec.c:39:19: warning: ignoring return value of 'fscanf', declared with attribute warn_unused_result [-Wunused-result] fscanf(f, "%d %d\n", &x, &m); ^ bsrec.c:40:44: warning: ignoring return value of 'fscanf', declared with attribute warn_unused_result [-Wunused-result] for(i = 1 ; i <= m ; ++i)fscanf(f, "%d %d\n", l + i, r + i); ^
Test | Timp | Mesaj evaluare | Scor posibil | Scor obținut | ||
---|---|---|---|---|---|---|
0 | 0 secunde | OK. | 10 | 10 | ||
1 | 0 secunde | OK. | 10 | 10 | ||
2 | 0 secunde | OK. | 10 | 10 | ||
3 | 0 secunde | OK. | 10 | 10 | ||
4 | 0 secunde | OK. | 10 | 10 | ||
5 | 0.016 secunde | OK. | 10 | 10 | ||
6 | 0.016 secunde | OK. | 10 | 10 | ||
7 | 0.016 secunde | OK. | 10 | 10 | ||
8 | 0.016 secunde | OK. | 10 | 10 | ||
9 | 0.012 secunde | OK. | 10 | 10 | ||
Punctaj total | 100 |
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema bsrec 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ă.