Detalii evaluare #50877467

Rezumat problemă

#4662 teze

Profesorul de informatică trebuie să corecteze tezele a m elevi. Elevii au avut de rezolvat n probleme în teză, numerotate de la 1 la n. Fiecare elev a rezolvat toate problemele, deci profesorul are de corectat în total m x n probleme. La începerea corectării fiecărei teze, trebuie identificat numele elevului, proces care durează exact p secunde de fiecare dată, chiar dacă se revine la aceeași teză de mai multe ori.
După începerea corectării unei teze, căutarea fiecărei probleme durează k secunde. Corectarea primei probleme din submulțimea aleasă durează t[1] secunde, corectarea celei de-a doua probleme durează t[2] secunde ș.a.m.d. Se garantează că t[1] < t[2] < ... < t[n]. De fiecare dată când se revine la o anumită teză și se reîncepe corectarea ei cu o altă submulțime de probleme, corectarea primei probleme din submulțime va dura din nou t[1] secunde.
Să se determine timpul minim în care pot fi corectate cele m lucrări.

ONI 2024, clasa a 10-a

Detalii

Problema teze Operații I/O teze.in/teze.out
Limita timp 0.5 secunde Limita memorie Total: 64 MB / Stivă 8 MB
Id soluție #50877467 Utilizator Andrei Visalon (Prekzursil)
Fișier teze.c Dimensiune 2.08 KB
Data încărcării 11 Mai 2024, 20:12 Scor / rezultat Eroare de compilare

Evaluare


Mesaj compilare

teze.c:3:20: warning: missing terminating ' character [enabled by default]
 const int MAX_Q = 1'000;

                    ^
teze.c:3:1: error: missing terminating ' character
 const int MAX_Q = 1'000;

 ^
teze.c:4:1: error: expected ',' or ';' before 'const'
 const int MOD = 1'000'000'007;

 ^
teze.c:4:18: warning: multi-character character constant [-Wmultichar]
 const int MOD = 1'000'000'007;

                  ^
teze.c:4:26: warning: missing terminating ' character [enabled by default]
 const int MOD = 1'000'000'007;

                          ^
teze.c:4:1: error: missing terminating ' character
 const int MOD = 1'000'000'007;

 ^
teze.c:10:1: error: unknown type name 'u64'
 u64 p;

 ^
teze.c:11:5: error: variably modified 'd' at file scope
 int d[MAX_Q];

     ^
teze.c:12:5: error: variably modified 'part_d' at file scope
 int part_d[MAX_Q + 1]; // suma primelor i valori, deci part_d[2] = d[0] + d[1]

     ^
teze.c: In function 'read_data':
teze.c:17:3: warning: format '%llu' expects argument of type 'long long unsigned int *', but argument 5 has type 'int *' [-Wformat=]
   fscanf(f, "%d %d %llu %d %d %d", &n, &m, &p, &k, &t1, &q);

   ^
teze.c: At top level:
teze.c:31:1: error: unknown type name 'u64'
 u64 t(u64 i) {

 ^
teze.c:31:7: error: unknown type name 'u64'
 u64 t(u64 i) {

       ^
teze.c:37:1: error: unknown type name 'u64'
 u64 pcost(unsigned f) {

 ^
teze.c: In function 'pcost':
teze.c:38:3: error: unknown type name 'u64'
   u64 result = p;

   ^
teze.c:40:5: warning: implicit declaration of function 't' [-Wimplicit-function-declaration]
     result += t(i);

     ^
teze.c:43:24: error: 'u64' undeclared (first use in this function)
   return result * f + (u64)(n % f) * t(n / f + 1);

                        ^
teze.c:43:24: note: each undeclared identifier is reported only once for each function it appears in
teze.c: At top level:
teze.c:46:1: error: unknown type name 'u64'
 u64 cost(int f) {

 ^
teze.c: In function 'cost':
teze.c:47:23: error: 'u64' undeclared (first use in this function)
   return (pcost(f) + (u64)k * n) % MOD * m % MOD;

                       ^
teze.c:47:27: error: expected ')' before 'k'
   return (pcost(f) + (u64)k * n) % MOD * m % MOD;

                           ^
teze.c:47:36: error: 'MOD' undeclared (first use in this function)
   return (pcost(f) + (u64)k * n) % MOD * m % MOD;

                                    ^
teze.c: At top level:
teze.c:50:1: error: unknown type name 'u64'
 u64 bin_search_phases() {

 ^
teze.c:74:19: error: unknown type name 'u64'
 void write_answer(u64 min_cost) {

                   ^
teze.c: In function 'main':
teze.c:83:3: error: unknown type name 'u64'
   u64 min_cost = bin_search_phases();

   ^
teze.c:84:3: warning: implicit declaration of function 'write_answer' [-Wimplicit-function-declaration]
   write_answer(min_cost);

   ^
teze.c: In function 'read_data':
teze.c:17:9: warning: ignoring return value of 'fscanf', declared with attribute warn_unused_result [-Wunused-result]
   fscanf(f, "%d %d %llu %d %d %d", &n, &m, &p, &k, &t1, &q);

         ^
teze.c:19:11: warning: ignoring return value of 'fscanf', declared with attribute warn_unused_result [-Wunused-result]
     fscanf(f, "%d", &d[(2 * q - 2 + i) % q]); // pune d_2 pe prima poziție

           ^
teze.c: In function 'pcost':
teze.c:44:1: warning: control reaches end of non-void function [-Wreturn-type]
 }

 ^
teze.c: In function 'cost':
teze.c:48:1: warning: control reaches end of non-void function [-Wreturn-type]
 }

 ^

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