Cod sursa(job #1016215)

Utilizator Raducu1992Raducu Raducu1992 Data 25 octombrie 2013 22:00:34
Problema Gutui Scor 10
Compilator c Status done
Runda teme_upb Marime 1.55 kb
#include <stdio.h>
#include<stdlib.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--;
    }

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