Cod sursa(job #1895641)

Utilizator 3DwArDPauliuc Edward 3DwArD Data 28 februarie 2017 09:20:11
Problema Energii Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("energii.in");
ofstream g("energii.out");
int n,w,s;
int a[2][10011002];
int s1[1002],s2[1002];
int main()
{
    f>>n>>w;
    for(int i=1; i<=n; i++)
    {
        f>>s1[i]>>s2[i];
        s+=s1[i];
    }
    int ans1=INT_MAX,ans2=INT_MAX;
    int q=1;
    if(s<w)g<<-1;
    else
    {
        int q1=1,q2=0;
        for(int k=1; k<=n; k++)
        {
            for(int j=s2[k]; j<=s; j++)
            {
               a[q1][j]=max(a[q2][j-s2[k]]+s1[k],a[q2][j]);
                if(a[q1][j]>=w&&j<ans1)
                {
                    ans2=a[q1][j];
                    ans1=j;
                }
            }
            for(int j=1;j<=s;j++){
                a[q2][j]=a[q1][j];
            }
            q1-=q;
            q2+=q;
            q*=-1;
        }
    g<<ans1;
    }
    return 0;
}