Cod sursa(job #2133879)

Utilizator PushkinPetolea Cosmin Pushkin Data 17 februarie 2018 13:43:11
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <iostream>
#include <fstream>
#include <bits/stdc++.h>
using namespace std;
ifstream f("rucsac.in");
ofstream g("rucsac.out");
struct Ob
{
    double val, g, pos;
};
vector<Ob> v, res;
bool Comp(Ob o1, Ob o2)
{
    return (o1.g/o1.val<o2.g/o2.val);
}
bool com(Ob o1, Ob o2)
{
    return (o1.pos<o2.pos);
}
int main()
{
    int N, M, i, p;
    double proc;
    f>>N>>M;
    v.resize(N);
    for(i=0;i<N;i++)
    {
        f>>v[i].val>>v[i].g;
        v[i].pos=i;
    }
    sort(v.begin(), v.end(), Comp);
    i=0;
    while(v[i].g<=M)
    {
        res.push_back(v[i]);
        M-=v[i].g;
        i++;
    }
    proc=double(M)*100/v[i].g;
    p=v[i].pos;
    res.push_back(v[i]);
    sort(res.begin(),res.end(),com);
     for(i=0;i<res.size();i++)
    {
        g<<res[i].pos+1<<' ';
        if(res[i].pos==p)g<<proc<<'\n';
        else g<<"100\n";
    }
    f.close();
    g.close();
    return 0;
}