Detalii evaluare #54196765

Rezumat problemă

#3032 sufle

Sufle este un personaj cu urechi ascuțite, îndrăgostit de algoritmică. El are o antipatie profundă față de Aisimok, cel care îl tot provoacă să rezolve probleme folosind tot felul de formule. Sufle a botezat aceste probleme Emsiteanap. Astăzi Aisimok i-a aruncat tânărului Sufle o nouă provocare:

Pentru oricare două numere naturale se definește următoarea operație:

  • se consideră reprezentările în baza 2 pentru cele două numere;
  • se alege o poziție în reprezentarea binară a primului număr;
  • se schimbă cifra situată pe acea poziție în primul număr cu cifra aflată pe exact aceeași
    poziție în al doilea număr. (Observați cum Aisimok, obsedat de matematică, nu a folosit termenul bit, tocmai pentru a-l irita pe Sufle.)

Pentru un șir oarecare de numere naturale, se poate aplica de oricâte ori și asupra oricăror două numere operația descrisă mai sus. Scopul final este ca suma pătratelor numerelor din șir să ajungă la valoarea minim posibilă. Denumim costul șirului acestă valoare minimă.

Pentru a deveni și mai antipatic, Aisimok îi cere lui Sufle să calculeze aceast cost pentru mai multe subsecvențe ale unui șir dat. Costul unei subsecvențe este egal cu costul șirului definitit de subsecvența dată.

Cerința: Pentru un șir cunoscut și pentru mai multe subsecvențe date să se calculeze suma minimă a pătratelor numerelor din subsecvență după aplicare a operației descrise, de oricâte ori se consideră necesar și asupra oricăror numere din subsecvență.

Detalii

Problema sufle Operații I/O sufle.in/sufle.out
Limita timp 2 secunde Limita memorie Total: 256 MB / Stivă 256 MB
Id soluție #54196765 Utilizator prof CNTV (tudor)
Fișier sufle.cpp Dimensiune 1.85 KB
Data încărcării 21 Noiembrie 2024, 20:36 Scor / rezultat 100 puncte

Evaluare


Mesaj compilare

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

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

                                 ^

Rezultat evaluare

Test Timp Mesaj evaluare Scor posibil Scor obținut
1 0 secunde OK. 8 8
2 0 secunde OK. 8 8
3 0 secunde OK. 7 7
4 0.016 secunde OK. 7 7
5 0.004 secunde OK. 5 5
6 0.012 secunde OK. 5 5
7 0.008 secunde OK. 5 5
8 0.04 secunde OK. 5 5
9 0.016 secunde OK. 5 5
10 0.02 secunde OK. 5 5
11 0.152 secunde OK. 10 10
12 0.152 secunde OK. 10 10
13 0.084 secunde OK. 5 5
14 0.04 secunde OK. 5 5
15 0.016 secunde OK. 5 5
16 0.016 secunde OK. 5 5
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 sufle 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ă.