Cod sursa(job #1135783)

Utilizator andutalaatAndu Talaat andutalaat Data 8 martie 2014 13:37:16
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
struct andu{int stanga,dreapta;};
andu v[1001];
bool sortare(andu a,andu b){
    if(a.dreapta==b.dreapta)
        if(a.stanga<b.stanga)
            return true;
    else
    if(a.dreapta>b.dreapta)
        return true;
    else
        return false;}
int main()
{
int greutate,n,i,s,p,pp;
freopen("rucsac.in","r",stdin);
freopen("rucsac.out","w",stdout);
scanf("%d%d",&n,&greutate);
for(i=1;i<=n;i++){
    scanf("%d%d",&v[i].stanga,&v[i].dreapta);}
sort(v+1,v+n+1,sortare);
s=0;
p=0;
pp=1;
for(i=1;i<=n&&pp==1;i++){
    if(s<greutate){
    p=p+v[i].dreapta;
    s=s+v[i].stanga;}
    if(s>greutate){
        pp=0;
        p=p-v[i].dreapta;}}
printf("%d",p);
return 0;
}