Cod sursa(job #1786239)

Utilizator tiberiu.bucur17Tiberiu Constantin Emanoil Bucur tiberiu.bucur17 Data 22 octombrie 2016 17:09:39
Problema Energii Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <stdio.h>
#include <ctype.h>
#define min(a,b) (a<b && a)? a:b
#define BUF_SIZE 4008
FILE *fin,*fout;
char buf[BUF_SIZE];
int pos=BUF_SIZE,d[1002],max;
inline char getch()
{
    if(pos==BUF_SIZE)
        fread(buf,BUF_SIZE,1,fin),pos=0;
    return buf[pos++];
}
inline int read()
{
    char ch=getch();
    int x=0;
    while(!isdigit(ch))
        ch=getch();
    do
    {
        x=x*10+ch-'0';
        ch=getch();
    } while(isdigit(ch));
    return x;
}
int main()
{
    fin=fopen("energii.in","r");
    fout=fopen("energii.out","w");
    int g,w,i,e,c,j;
    g=read();w=read();
    for(i=0;i<g;i++)
    {
        e=read();c=read();
        max=min(max+e,w);
        for(j=max;j>=e;j--)
            d[j]=min(d[j],d[j-e]+c);
        for(;j;j--)
            d[j]=min(d[j],c);
    }
    if(d[w])
        fprintf(fout,"%d",d[w]);
    else
        fprintf(fout,"-1");
    fclose(fin);
    fclose(fout);
    return 0;
}