Cod sursa(job #1126550)

Utilizator Raducu1992Raducu Raducu1992 Data 27 februarie 2014 01:02:14
Problema Gutui Scor 90
Compilator c Status done
Runda teme_upb Marime 1.37 kb
#include <stdio.h>
#include<stdlib.h>
struct gutui
{
    int inaltime;
    int greutate;
};
struct gutui *v;
int gutui_culese = 0,vecGutui[100001];
void scrieDate(int s)
{
    FILE *f = fopen("gutui.out","w");
     fprintf(f,"%d",s);
     fclose(f);
}
void cautLoc(int gretateaMea,int capat)
{
    int i,aux;
    for( i = capat ; i >= 0; --i )
    {
        if( vecGutui[i] < gretateaMea )
        {
            aux = vecGutui[i];
            vecGutui[i] = gretateaMea;
            gretateaMea = aux;
            gutui_culese += vecGutui[i] - gretateaMea;
        }
    }
}
int main()
{
    int N,H,U,elem,aux,i;
    FILE *f = fopen("gutui.in","r");
    fscanf(f,"%d%d%d",&N,&H,&U);
    v = (struct gutui*)calloc(N,sizeof(struct gutui));
    for(i = 0; i < N; ++i)
    {
        fscanf(f,"%d %d",&v[i].inaltime,&v[i].greutate);
        elem = (H - v[i].inaltime) / U;
            while( 1 )
            {
                if( vecGutui[elem] == 0 )
                {
                    vecGutui[elem] = v[i].greutate;
                    gutui_culese += v[i].greutate;
                    break;
                }
                else
                {
                    cautLoc(v[i].greutate,elem);
                    break;
                }
            }
    }
    //printf("%d",gutui_culese);
    scrieDate(gutui_culese);
 return 0;
}