Mai intai trebuie sa te autentifici.
Cod sursa(job #2699234)
| Utilizator | Data | 23 ianuarie 2021 21:55:42 | |
|---|---|---|---|
| Problema | Energii | Scor | 100 |
| Compilator | c-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.69 kb |
#include <stdio.h>
#define MAX_G 5000
#define MAX_COST 10000000
int d[MAX_G + 1];
int main() {
FILE *fin, *fout;
int n, g, e, c, i, j;
fin = fopen( "energii.in", "r" );
fscanf( fin, "%d%d", &n, &g );
for ( i = 1; i <= g; i++ )
d[i] = MAX_COST;
for ( i = 0; i < n; i++ ) {
fscanf( fin, "%d%d", &e, &c );
for ( j = g; j >= e; j-- )
d[j] = d[j - e] + c < d[j] ? d[j - e] + c : d[j];
for ( j = e - 1; j >= 0; j-- )
d[j] = d[j] < c ? d[j] : c;
}
fclose( fin );
fout = fopen( "energii.out", "w" );
fprintf( fout, "%d", d[g] == MAX_COST ? -1 : d[g] );
fclose( fout );
return 0;
}
