Mai intai trebuie sa te autentifici.
Cod sursa(job #1094885)
Utilizator | Data | 29 ianuarie 2014 22:59:47 | |
---|---|---|---|
Problema | Dezastru | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1 kb |
#include <cstdio>
#define minim(a,b) (a<b)?(a):(b)
#define inf 0xffffffffffffffffLL
using namespace std;
unsigned long long v[55][505];
int n,t;
inline void initv(int n) {
for (int i=0;i<=n+1;i++) for (int j=0;j<=504;j++) v[i][j] = inf;
v[1][0] = 0;
}
int main() {
freopen("calatorie.in","r",stdin);
freopen("calatorie.out","w",stdout);
scanf("%d",&t);
while (t--) {
scanf("%d",&n);
initv(n);
for (int i=2;i<=n;i++) {
unsigned long long l,h;
scanf("%llu %llu",&l,&h);
for (int j=0;j<=500;j++) {
if (v[i-1][j] != inf) {
v[i][j] = minim(v[i][j],v[i-1][j]+l);
v[i][j+h] = minim(v[i][j+h],v[i-1][j]);
}
}
}
unsigned long long fmin = inf;
for (int j=0;j<=501;j++) if (v[n][j] != inf) fmin = minim(fmin,v[n][j]+j*j*j*j);
printf("Consumul minim = %llu.\n",fmin);
}
return 0;
}