Cod sursa(job #1427274)

Utilizator mateicosCostescu Matei mateicos Data 1 mai 2015 20:46:27
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <cstdio>
long long v[1000001];

int main()
{
    freopen("energii.in", "r", stdin);
    freopen("energii.out", "w", stdout);
    int n, p, e, b, i, j, dr, min;
    scanf("%d%d", &n, &p);
    dr=0;
    v[0]=0;
    for(i=1;i<1000000;i++){
      v[i]=2000000000;
    }
    min=2000000000;
    for(i=0;i<n;i++){
      scanf("%d%d", &e, &b);
      for(j=dr;j>=0;j--){
        if(v[j]+b<v[j+e] && v[j]!=2000000000 && j<p){
          v[j+e]=v[j]+b;
          if(v[j]+e>=p && min>v[j+e])
            min=v[j+e];
        }
      }
      dr+=e;
    }
    if(min==2000000000)
      min=-1;
    printf("%d", min);
    return 0;
}