Cod sursa(job #2163640)

Utilizator cc4infinityCojocaru Catalin cc4infinity Data 12 martie 2018 19:15:38
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
struct gen{
int c;
int e;
};
int n,m,i,j,k,e;
int a[3][10001];
const int nmax=10001;
gen t[1001];
bool compare(gen a, gen b)
{
    return a.e<b.e||(a.e==b.e&&a.c<b.c);
}

int pp(int a, int b)
{
    if(a<e&&b<e) return max(a,b);
    if(a<e&&b>=e) return b;
    if(b<e&&a>=e) return a;
    return min(a,b);
}

int main(){
fin>>n;
fin>>e;
for(i=1;i<=n;i++) fin>>t[i].e>>t[i].c;
sort(t+1,t+n+1,compare);
for(i=t[1].e;i<e;i++) a[1][i]=t[1].c;

int s=0;
for(i=1;i<=n;i++) s+=t[i].e;
if(s<e) fout<<"-1";
else{

for(i=2;i<=n;i++)
{
 for(j=1;j<=e;j++)
    if(j>=t[i].e) a[2][j]=pp(a[1][j],a[1][j-t[i].e]+t[i].c);
    else a[2][j]=a[1][j];
 for(j=1;j<=e;j++) a[1][j]=a[2][j];
}

fout<<a[2][e];}
return 0;
}