Cod sursa(job #1427842)

Utilizator bogdi1bogdan bancuta bogdi1 Data 3 mai 2015 08:38:14
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <cstdio>

using namespace std;
int v[10011005];
int main()
{   freopen("energii.in", "r",stdin);
    freopen("energii.out", "w",stdout);
    int g,w,x,y,i,dr,min,j;
    scanf("%d%d", &g, &w);
    for(i=1; i<=10011001; i++)
      v[i]=-1;
    dr=0;
    min=2000000000;
    for(i=1; i<=g; i++){
      scanf("%d%d", &x, &y);
      for(j=dr; j>=0; j--)
        if(v[j]!=-1){
          if(j+x>=w){
            if(v[j]+y<min){
              min=v[j]+y;
              v[j+x]=min;
            }
          }
          else{
            if(v[j+x]==-1)
              v[j+x]=v[j]+y;
            else
              if(v[j]+y<v[j+x])
                v[j+x]=v[j]+y;
          }
        }
      if(dr<w)
        dr=dr+x;
    }
    if(min==2000000000)
      printf("-1");
    else
      printf("%d", min);
    return 0;
}