Pagini recente » Cod sursa (job #1696739) | Cod sursa (job #2334680) | Cod sursa (job #3174014) | Cod sursa (job #632504) | Cod sursa (job #1314772)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("date.in");
ofstream gi("date.out");
void unitate(int n, int u[], int v[], int g[])
{
for(int i=1;i<=n;i++)
u[i]=v[i]/g[i];
}
void ordonare(int n, int o[],int u[],int v[],int g[])
{
for(int i=1;i<n;i++)
for(int j=i+1;j<=n;j++)
if(u[i]<u[j])
{
swap(u[i],u[j]);
swap(o[i],o[j]);
swap(g[i],g[j]);
swap(v[i],v[j]);
}
}
void rucsac(int n, int gr, int o[], int u[], int v[], int g[])
{
int gg=0,vv=0,ii;
for(int i=1;gg+g[i]<=gr;i++)
{
gg=gg+g[i];
vv=vv+v[i];
gi<<v[i]<<' '<<gg<<endl;
ii=i+1;
}
if(ii<=n)
{
gg=gr-gg;
vv=vv+gg*u[ii];
gi<<u[ii]*gg<<' '<<gg<<endl;
}
gi<<"valoare totala: "<<vv<<endl;
gi<<"nr de obiecte: "<<ii<<endl;
}
int main()
{
int n, gr,o[10],v[10],g[10],u[10];
f>>n>>gr;
for(int i=1;i<=n;i++)
{
f>>v[i]>>g[i];
o[i]=i;
}
unitate(n,u,v,g);
ordonare(n,o,u,v,g);
rucsac(n,gr,o,u,v,g);
f.close();
gi.close();
return 0;
}