Cod sursa(job #440139)

Utilizator neoStyle89abc abc neoStyle89 Data 11 aprilie 2010 22:17:01
Problema Gutui Scor 0
Compilator cpp Status done
Runda teme_upb Marime 1.12 kb
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

typedef struct mar {
    int h;
    int g;
} mar;

int n,ha,u;
mar a[100],v[100];

void afisare() {
    int i;
    printf("%d ",n);
    printf("%d ",ha);
    printf("%d\n",u);
    for(i=0;i<n;i++)
        printf("%d %d\n", v[i].h,v[i].g );
    printf("\n");
}

void citire() {
    int i;

    FILE *f=fopen("gutui.txt","r");
    fscanf(f , "%d%d%d" , &n , &ha , &u);

    for(i=0;i<n;i++)
        fscanf( f, "%d%d" , &a[i].h , &a[i].g );
    fclose(f);
}

int compare (const void *a , const void *b) {
    return -( (*(mar*)a).g -  (*(mar*)b).g );
}

int gutui() {
    //lung/pas
    int i,j,x=0;

    qsort(a,n,sizeof(mar),compare);
    
    if( a[0].h < ha && !v[0].g ) {
        v[0]=a[0];
        x+=a[0].g;
    }
    
    for(i=1;i<n;i++)
    {
        for(j=1;j<ha/u;j++)
            if( a[i].h < ha && v[j].h==0 )
            {
                x+=a[i].g;
                v[j]=a[i];
                break;
            }
    }
    return x;
}

int main() {
    int x;
    citire();
    
    x=gutui();
    printf("%d\n",x);
    afisare();
    
    system("pause");
    return 0;
}