Cod sursa(job #2659122)

Utilizator alexandrapopoiuAlexandra Popoiu alexandrapopoiu Data 15 octombrie 2020 21:08:54
Problema Energii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <iostream>
#include <stdio.h>
using namespace std;
struct alex{
int e,p;
}v[1002];
int suma[15003];
int main()
{
    FILE *fin,*fout;
    int G,W,pozmax,i,j,k;
    fin=fopen("energii.in","r");
    fout=fopen("energii.out","w");
    fscanf(fin,"%d%d",&G,&W);
    for(i=1;i<=G;i++){
        fscanf(fin,"%d%d",&v[i].e,&v[i].p);

    }
    pozmax=v[1].e;
    suma[v[1].e]=v[1].p;
    for(i=2;i<=G;i++){

        for(j=pozmax;j>=1;j--)
            if(suma[j]>0)
                suma[j+v[i].e]=suma[j]+v[i].p;
        pozmax=v[i].e;
        if(suma[v[i].e]>0){
            if(suma[v[i].e]>v[i].p)
                suma[v[i].e]=v[i].p;
        }
        else
            suma[v[i].e]=v[i].p;

    }
    if(suma[W]>0)
        fprintf(fout,"%d",suma[W]);
    else{
        k=0;
        i=W;
        while(k==0 && i<=pozmax){
            if(suma[i]>0){
                fprintf(fout,"%d",suma[i]);
                k=1;
            }

            i++;
        }

    }






    return 0;
}