Cod sursa(job #1779962)

Utilizator nicholascantarNicholas David Cantar Gogitidze nicholascantar Data 15 octombrie 2016 18:55:20
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
using namespace std;
int a[3][100001],w[5010],p[5010],n,gg,k;
void schimbare ()
{
    int i;
    for (i=gg;i>=0;i--)
        a[1][i]=a[2][i];
}
int i,j;
int main()
{
    ifstream fin ("energii.in");
    ofstream fout ("energii.out");
    fin>>n>>gg;
    for (i=0;i<n;i++)
    {
        fin>>w[i]>>p[i];
    }
    for(i=0;i<=gg;i++)
    {
        a[1][i]=10010;
        a[2][i]=10010;
    }
   /*for (k=0;k<=gg;k++)
            fout<<a[1][k]<<" ";
        fout<<'\n';
        for (k=0;k<=gg;k++)
            fout<<a[2][k]<<" ";
        fout<<'\n'<<'\n';*/
    for (i=0;i<n;i++)
    {
        for (j=gg;j>=0;j--)
            if (w[i]<j) a[2][j]=min(a[1][j],a[1][j-w[i]]+p[i]);
            else a[2][j]=min(a[1][j],p[i]);
        /*for (k=0;k<=gg;k++)
            fout<<a[1][k]<<" ";
        fout<<'\n';
        for (k=0;k<=gg;k++)
            fout<<a[2][k]<<" ";
        fout<<'\n'<<'\n';*/
        schimbare();
    }
    if (a[1][gg]!=10010) fout<<a[1][gg];
    else fout<<"-1";
    return 0;
}