Pagini recente » Cod sursa (job #1654894) | Cod sursa (job #1115271) | Cod sursa (job #663165) | Cod sursa (job #2178164) | Cod sursa (job #1082801)
#include <fstream>
using namespace std;
ifstream read("rucsac.in");
ofstream write("rucsac.out");
void citire_greutate_si_castig_obiecte(int nrob,int cr,int obiecte[100],int obiecte2[100],int nrdeordine[100])
{
int i,nrord=1;
for(i=0;i<2*nrob;i++)
{
read>>obiecte[i];
obiecte2[i]=obiecte[i];
if(i%2==0)
{
nrdeordine[i]=nrord;
nrord++;
}
}
}
void ordonare_obiecte_descrescator_dupa_castig(int nrob,int obiecte2[100],int nrdeordine[100])
{
int i,aux1,aux2,aux3,ok=0;
while(ok==0)
{
ok=1;
for(i=0;i<2*nrob;i=i+2)
if(obiecte2[i+1]<obiecte2[i+3])
{
aux1=obiecte2[i+3];
obiecte2[i+3]=obiecte2[i+1];
obiecte2[i+1]=aux1;
aux2=obiecte2[i+2];
obiecte2[i+2]=obiecte2[i];
obiecte2[i]=aux2;
aux3=nrdeordine[i+2];
nrdeordine[i+2]=nrdeordine[i];
nrdeordine[i]=aux3;
ok=0;
}
}
}
void afisare_rezultat(int nrob,int obiecte2[100],int nrdeordine[100],int cnrdeordine[100],int cr)
{
int i,ok=0,k=0,s=0;
for(i=0;i<2*nrob;i=i+2)
{
ok=ok+obiecte2[i];
if(ok<=cr)
{
cnrdeordine[k]=nrdeordine[i];
s=s+obiecte2[i+1];
k++;
}
}
write<<s;
}
int main()
{
int nrob,cr,obiecte[100],obiecte2[100],nrdeordine[100],cnrdeordine[100];
read>>nrob>>cr;
citire_greutate_si_castig_obiecte(nrob,cr,obiecte,obiecte2,nrdeordine);
ordonare_obiecte_descrescator_dupa_castig(nrob,obiecte2,nrdeordine);
afisare_rezultat(nrob,obiecte2,nrdeordine,cnrdeordine,cr);
return 0;
}