Cod sursa(job #2116611)

Utilizator andrei13Paval Andrei andrei13 Data 27 ianuarie 2018 19:53:29
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("date.in");
int val[1111],gr[1111],x[10000];

int main()
{int n,gmax,p=0,pmax=0,g=0;
f>>n>>gmax;
for(int i=1;i<=n;i++)
    f>>gr[i]>>val[i];
bool s;
do{s=1;
for(int i=1;i<n;++i)
    if(gr[i]>gr[i+1])
    {
        swap(gr[i],gr[i+1]);
        swap(val[i],val[i+1]);
        s=0;
    }

}while(!s);

int i=1;
while(i)
{
    x[i]++;
    if(x[i]>n)
        {g-=gr[x[--i]];p-=val[x[i]];}
    else
        if(g+gr[x[i]]<gmax)
        {
            g+=gr[x[i++]];
            x[i]=x[i-1];
            p+=val[x[i]];
            if(p>pmax)
                pmax=p;
        }
        else if(g+gr[x[i]]>gmax)
               {g-=gr[x[--i]];p-=val[x[i]];}
              else
                   if(p+val[x[i]]>pmax)
                      pmax=p+val[x[i]];
}
cout<<pmax;


    return 0;
}