Cod sursa(job #1016193)

Utilizator Raducu1992Raducu Raducu1992 Data 25 octombrie 2013 21:29:43
Problema Gutui Scor 10
Compilator c Status done
Runda teme_upb Marime 1.43 kb
#include <stdio.h>
struct gutui
{
    int greutate,inaltime;
};
int N,H,U,greutateFinal=0;
struct gutui *v;
void Date()
{
    int i;
    FILE *f = fopen("gutui.in", "r");
    fscanf(f, "%d%d%d",&N,&H,&U);
    v = (struct gutui*)malloc(N*sizeof(struct gutui));
    for(i = 0; i < N; ++i)
    {
        fscanf(f, "%d", &v[i].inaltime);
        fscanf(f, "%d", &v[i].greutate);
    }
    fclose(f);
}
void sortare()
{
    int i,ok=1,n = N,retineG,retineH;
    while(ok != 0)
    {
        ok = 0;
        for(i = 0; i < n-1; i++)
        {
            if( v[i].inaltime < v[i+1].inaltime )
            {
                retineH = v[i].inaltime;
                retineG = v[i].greutate;
                v[i].inaltime = v[i+1].inaltime;
                v[i].greutate = v[i+1].greutate;
                v[i+1].inaltime = retineH;
                v[i+1].greutate = retineG;
                ok = 1;
            }
        }
        n--;
    }

}
void cresteH(int k)
{
    int i;
    for(i = k; i < N; i++)
        v[i].inaltime += U;

}
void scrieDate()
{
    FILE *f = fopen("gutui.out","w");
     fprintf(f,"%d",greutateFinal);
    fclose(f);
}
int main()
{
    int i,k=0;
    Date();
    sortare();
    while( k < N )
    {
        if( v[k].inaltime <= H)
        {
            greutateFinal += v[k].greutate;
            cresteH(k+1);
        }
        k++;
    }
    scrieDate();
 return 0;
}