Cod sursa(job #711165)

Utilizator StefanLacheStefan Lache StefanLache Data 11 martie 2012 15:15:11
Problema Gutui Scor 10
Compilator cpp Status done
Runda teme_upb Marime 1.03 kb
#include<stdio.h>
#include<stdlib.h>
struct gutuie
{
    int inaltime;
    int  greutate;
};
gutuie G[100000];
int cules[100000];
int compare (const void *a,const void *b)
{
    return (*(int *)b- *(int *)a);
}
int main()
{
    FILE *f=fopen("gutui.in","rt");
    FILE *a=fopen("gutui.out","wt");
    int N,H,U,i,ult_completat=-1,suma=0;
    fscanf(f,"%i%i%i",&N,&H,&U);
    for(i=0;i<N;i++)
            fscanf(f,"%i%i",&G[i].inaltime,&G[i].greutate);
    qsort(G,N,sizeof(gutuie),compare);                                      //ordonam structura descrescator dupa inaltime;
    for(i=0;i<N;++i)
             if(ult_completat!=-1 && G[i].greutate > cules[ult_completat] && G[i].inaltime<=H+U && G[i].inaltime>H)
                            cules[ult_completat]=G[i].greutate;
                else if(G[i].inaltime<=H)
            {
                cules[++ult_completat]=G[i].greutate;
                H-=U;
            }
    for(i=0;i<=ult_completat;i++)
        suma+=cules[i];
    fprintf(a,"%i",suma);
    return 0;
}