Cod sursa(job #2501730)

Utilizator Simi_bogdanSimion Bogdan Dumitru Simi_bogdan Data 30 noiembrie 2019 09:58:34
Problema Energii Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include<bits/stdc++.h>
using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
struct energie{
    int E,C;
}G[1002];
int n,w;
bool compare(energie a,energie b)
{
    return (a.C<b.C);
}
bool compare1(energie a,energie b)
{
    return (a.E<b.E);
}
void ceva()
{
in>>n>>w;
    for(int i=1;i<=n;i++)
        in>>G[i].E>>G[i].C;
    sort(G+1,G+n+1,compare);
}
int solve(int a,int en,int cst)
{
    if(a<=n )
    {
        if(G[a].E==w && en>=w )
            return G[a].C;
            if(en+G[a].E>=w )
                return cst+G[a].C;
            return solve(a+1,en+G[a].E,cst+G[a].C);

    }
    if(en>=w)
    return cst;
    else
        return -1;

}
int main()
{
    ceva();
    int r1=solve(1,0,0);
    sort(G+1,G+n+1,compare1);
    int r2=solve(1,0,0);
    if(r1==r2 && r1==-1)
        out<<-1;
    else
        out<<min(r1,r2);
}