Cod sursa(job #1914614)

Utilizator BlackREzRadut Alexandru Catalin BlackREz Data 8 martie 2017 17:40:25
Problema Energii Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <stdio.h>

using namespace std;

FILE* f;
FILE* g;
int s=0,st=0,n,w,mini;
struct generator{
    int power;
    int cost;
}a[5002];
int b[10012002];
void read(){
    fscanf(f,"%d %d",&n,&w);
    for(int i=1;i<=n;i++){
        fscanf(f,"%d%d",&a[i].power,&a[i].cost);
        s+=a[i].cost;
        st+=a[i].power;
    }
}
void solve(){
    mini=s+1;
    for(int i=1;i<=n;i++)
        for(int j=s-a[i].cost;j>=0;j--){
            if(b[j+a[i].cost]<b[j]+a[i].power){
                b[j+a[i].cost]=b[j]+a[i].power;
            if(j+a[i].cost<mini && b[j+a[i].cost]>=w)
                mini=j+a[i].cost;

            }
        }
    fprintf(g,"%d",mini);
}
int main()
{
    f=fopen("energii.in","r");
    g=fopen("energii.out","w");
    read();
    if(st<w) fprintf(g,"-1");
    else
        solve();
    return 0;
}