Cod sursa(job #1536636)

Utilizator DaniMocanuInterlopDani Mocanu DaniMocanuInterlop Data 26 noiembrie 2015 14:30:48
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.43 kb
#include <iostream>
#include <fstream>
#include <limits.h>
using namespace std;

ifstream f("rucsac.in");
ofstream g("rucsac.out");

int v[10000],gr[10000];


int main()
{
    int n,lim,gre,val,mi,ci,MI;
    f>>n;
    f>>lim;
    for(int i=1;i<=n;i++)
       {
            f>>gr[i];
            f>>v[i];
       }
    for(int i=1;i<=n;i++)
    {
        if(gr[i]>lim)
        {
            for( int j=i;j<n;j++)
            {
                v[j]=v[j+1];
                gr[j]=gr[j+1];
            }
            n--;
            i--;
        }
    }
    do
    {
        gre=0;
        val=0;
        for(int i=1;i<=n;i++)
        {
                val=val+v[i];
                gre=gre+gr[i];
        }
        if(gre>lim)
        {
            mi=INT_MAX;
            for(int i=1;i<=n;i++)
            {
                if(v[i]<mi)
                    mi=v[i];
            }
            MI=INT_MIN;
            for(int i=1;i<=n;i++)
            {
                if(v[i]==mi)
                    if(gr[i]>MI)
                        MI=gr[i];

            }
            for(int i=1;i<=n;i++)
            {
                if(gr[i]==MI && v[i]==mi)
                    ci=i;
            }
            for(int i=ci;i<n;i++)
            {
                v[i]=v[i+1];
                gr[i]=gr[i+1];
            }
            n--;
        }
    }while(gre>lim);
    g<<val;
    return 0;
}