Cod sursa(job #434888)

Utilizator sdascaluStefan Dascalu sdascalu Data 6 aprilie 2010 18:07:20
Problema Gutui Scor 10
Compilator cpp Status done
Runda teme_upb Marime 1.43 kb
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
//#include<conio.h>
int compare(const void *a, const void *b)
{
    if(*(int*)a>=*(int*)b)
       return -1;
    else
       return 1;
}
typedef struct{
        int h,g;
}gutui;
int main()
{
    FILE *f;
    gutui a[10000];
    int n,h,u;
    f=fopen("gutui.in","r");
    if(f!=NULL)
    {
               fscanf(f,"%i %i %i",&n,&h,&u);
               for(int i=0;i<n;i++)
                       fscanf(f,"%i %i",&a[i].h,&a[i].g);
               fclose(f);
    }
    printf("\nU este:%i",u);
    printf("\nMatricea initiala este:");
    for(int i=0;i<n;i++)
    {
       printf("\n");
       printf("%i %i",a[i].h,a[i].g);
    }
    qsort(a,n,sizeof(gutui),compare);
    printf("\nColectia sortata:");
    for(int i=0;i<n;i++)
    {
       printf("\n");
       printf("%i %i",a[i].h,a[i].g);
    }
    int max=0,h_curenta=0;
    int marcaje[10000];
    for(int i=0;i<10000;i++)
            marcaje[i]=0;
    for(int i=0;i<n;i++)
    {
            //printf("\n Inaltimea este:%i",a[i].h);
            if(a[i].h<=h)
            {
                //printf("\n Inaltimea este:%i,iar indicele este:%i",a[i].h,i);
                max+=a[i].g;
                for(int j=i;j<n;j++)
                        a[j].h+=u;
            }
    }
    f=fopen("gutui.out","w");
    fprintf(f,"%i",max);
    printf("\nMax este:%i",max);
    fclose(f);
    //getch();
}