Cod sursa(job #1401197)

Utilizator stefzahZaharia Stefan Tudor stefzah Data 25 martie 2015 18:21:17
Problema Energii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
/*#include <cstdio>
#include <algorithm>
using namespace std;
int Gmax,n,g[1001],v[1001],i,j,k,
double rap[1001],aux;
int main()
{freopen("energii.in","r",stdin);
 freopen("energii.out","w",stdout);
 scanf("%d%d",&n,&k);
 for(i=1;i<=n;i++)
    {scanf("%d%d",&v[i],&g[i]);
     rap[i]=v[i]/g[i];
    }
 for(i=1;i<=n;i++)
   {mx=a[i];
    q=i
    for(j=i+1;j<=n;i++)
       if(a[j]>mx){mn=a[j];q=j;}
    aux=rap[i];
    rap[i]=rap[q];
    rap[q]=aux;
    aux=v[i];
    v[i]=v[q];
    v[q]=aux;
    aux=g[i];
    g[i]=g[q];
    g[q]=aux;
   }
 for(i=1;i<=n;i++)
    {c=c+g[i];
     s=s+
    }
}
*/
#include <cstdio>
#include <algorithm>
using namespace std;
int Gmax,n,a[2][10001],g[1001],v[1001],i,j,k;
int main()
{freopen("energii.in","r",stdin);
 freopen("energii.out","w",stdout);
 scanf("%d%d",&n,&k);
 for(i=1;i<=n;i++)
    {scanf("%d%d",&v[i],&g[i]);
     if(g[i]>Gmax) Gmax=Gmax+g[i];
    }
 for(i=1;i<=n;i++)
    {for(j=1;j<=Gmax;j++)
       {if(g[i]>j) a[1][j]=a[0][j];
        else{a[1][j]=max(a[0][j],v[i]+a[0][j-g[i]]);
            }
       }
     for(j=1;j<=Gmax;j++)
        a[0][j]=a[1][j];
    }
 for(i=1;i<=Gmax;i++)
    if(a[1][i]>=k){printf("%d",i);break;}
 if(a[1][Gmax]<k)printf("-1");
}