Cod sursa(job #433767)

Utilizator buradaandreiBurada Andrei buradaandrei Data 4 aprilie 2010 11:48:45
Problema Gutui Scor 10
Compilator c Status done
Runda teme_upb Marime 1.13 kb
#include <stdio.h>
#include <stdlib.h>

int main() {
    FILE *fi=fopen("gutui.in","r");
    FILE *fo=fopen("gutui.out","w");
    typedef struct gutui {
        int h,g;
    } Gutui;
    Gutui *g,aux;
    int n,h,u,total=0,i,j,cules;

    fscanf(fi,"%d %d %d",&n,&h,&u);
    g=(Gutui*)calloc(n,sizeof(Gutui));
    for (i=0;i<n;i++) {
        fscanf(fi,"%d %d",&g[i].h,&g[i].g);
    }
    //sortez dupa greutate
    //ce e la egalitate, sortez dupa momentul disparitiei
    for (i=0;i<n-1;i++)
        for (j=i+1;j<n;j++)
            if ((h-g[j].h)/u<(h-g[i].h)/u) {
                aux=g[i];
                g[i]=g[j];
                g[j]=aux;
            }
            else if ((h-g[j].h)/u==(h-g[i].h)/u && g[j].g>g[i].g) {
                aux=g[i];
                g[i]=g[j];
                g[j]=aux;
            }


    for (i=0;i<n;i++) {
        cules=0;
        if (g[i].h<=h) {
            total+=g[i].g;
            cules=1;
        }
        if (cules)
            for (j=i+1;j<n;j++)
                g[j].h+=u;
    }

    fprintf(fo,"%d",total);
    fclose(fi);
    fclose(fo);
    return 0;
}