Mai intai trebuie sa te autentifici.

Cod sursa(job #1094885)

Utilizator beldeabogdanBogdan Beldea beldeabogdan 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;
}