Cod sursa(job #1636220)

Utilizator victorobamavictor olaru victorobama Data 6 martie 2016 23:59:21
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <fstream>

using namespace std;
ifstream f("rucsac.in");
ofstream g("rucsac.out");
int greutate,a[5005],b[5005],i,n,aux,gr,sortat,s,l,x,kappa;
void citire()
{
    f>>n>>greutate;
    for(i=1;i<=n;i++)
    {
        f>>a[i]>>b[i];

    }

}
void sortare()
{  while(!sortat)
        {sortat=1;
        for(i=1;i<n;i++)
            if(b[i]*a[i+1]<b[i+1]*a[i])
      {
        aux=a[i];
        a[i]=a[i+1];
        a[i+1]=aux;
        aux=b[i];
        b[i]=b[i+1];
        b[i+1]=aux;
        sortat=0;
      }
      else if(b[i]*a[i+1]==b[i+1]*a[i]&&b[i]<b[i+1])
      {
          aux=a[i];
        a[i]=a[i+1];
        a[i+1]=aux;
        aux=b[i];
        b[i]=b[i+1];
        b[i+1]=aux;
        sortat=0;
      }

        }
}


int main()
{
   citire();

   sortare();
    for(i=1;i<=n;i++)
    {s=s+b[i];gr=gr+a[i];if(gr>greutate){s=s-b[i];gr=gr-a[i];
    for(l=i;l<=n;l++)
        if(gr+a[l]<=greutate)
   {s=s+b[l];gr=gr+a[l];
    }
    }}
   g<<s<<'\n';
  f.close();
   g.close();
   return 0;
}