Cod sursa(job #724696)

Utilizator StefanLacheStefan Lache StefanLache Data 26 martie 2012 18:48:43
Problema Gutui Scor 100
Compilator cpp Status done
Runda teme_upb Marime 1.34 kb
#include<stdio.h>
#include<stdlib.h>
int N,H,U;
struct gutuie
{
    int inaltime;
    int greutate;
};
gutuie G[100001];
int culese[100001];
int compare(const void *a,const void *b)
{
    return ( *(int *)b - *(int *)a );
}
int main()
{
    FILE *f=fopen("gutui.in","rt");
    FILE *g=fopen("gutui.out","wt");
    int i,ult=-1,min,pozmin,j;
    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);
    for(i=0;i<N;++i)
    {
        if(G[ i].inaltime <= H)
            {
                culese[++ult]=G[i].greutate;
                H-=U;
            }
            else
            {
                min=culese[0];pozmin=0;                                     //aici merge imbunatatire,parcurg vectorul ca sa determin minimul;
                if(ult >=1 )for(j=1;j<=ult;++j)
                    if(culese[j] < min)
                    {
                        min=culese[j];
                        pozmin=j;
                    }
                if(G[i].greutate > min)
                    {
                        culese[pozmin]=G[i].greutate;
                        printf("MUITZA");
                    }

            }
    }
    int s=0;
    for(i=0;i<=ult;++i)
        s+=culese[i];
    fprintf(g,"%i",s);
    return 0;
}