Cod sursa(job #437571)

Utilizator GeorgianneGircu Georgiana Georgianne Data 9 aprilie 2010 22:09:29
Problema Gutui Scor 10
Compilator c Status done
Runda teme_upb Marime 0.98 kb
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

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

int compare(const void *a, const void *b)
{
    gutui *aa = (gutui *)a;
    gutui *bb = (gutui *)b;
    return (aa->h -bb->h);
} 
int max (const void *a,int n)
{
   gutui *aa=(gutui *)a;
   int i,max=0,ok=0;
   for(i=0;i<n;i++)
       if(aa[i].g > max)
           max=aa[i].g;     
   return max;
}
int main()
{
    FILE *fis=fopen("gutui.in","r");
    FILE *fis_out=fopen("gutui.out","w");
    int n,h_max,u,i,j,greutate=0;
    fscanf(fis,"%i",&n);
    gutui a[n];
    fscanf(fis,"%i",&h_max);
    fscanf(fis,"%i",&u);
    for(i = 0; i < n; i++)
        fscanf(fis, "%i %i", &a[i].h,&a[i].g);
   qsort(a,n,sizeof(gutui),compare);
  for (i=n-1;i>=0;i--)
   {
     if (a[i].h<=h_max)
               {
                 greutate+=a[i].g;
                 h_max=h_max-u;
                 }     
  }    
  fprintf(fis_out,"%i",greutate);
   return 0; 
}