Cod sursa(job #437825)

Utilizator GeorgianneGircu Georgiana Georgianne Data 10 aprilie 2010 03:14:12
Problema Gutui Scor 0
Compilator c Status done
Runda teme_upb Marime 1.45 kb
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
//#include <conio.h>
//void qsort( void *buf, size_t num, size_t size, int (*compare)(const void *, const void *) ); 
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->g -bb->g);
}
 
int main()
{
    FILE *fis=fopen("gutui.in","r");
    FILE *fis_out=fopen("gutui.out","w");
    int n,h_max,u,i,j,aux=0,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);    //gutui sortate dupa greutate
int test[h_max/u+1];
 for(i=0;i<=h_max/u;i++)
    test[i]=0;
    int ok=0;
 for(i=0;i<n;i++)  
 {  
    aux=a[i].h/u+1;
    for(;aux<=h_max/u;aux++)
            if(test[aux]==0)
            { 
                      ok++;
                       test[aux]=1; 
                       printf("%i %i\n",aux,a[i].g);
                       greutate=greutate+a[i].g;
            }  
            
                                            
}          
 /* for(i = 0; i < n; i++)
  {
        printf("%2i ",a[i].h);
        printf("%2i ",a[i].g);
        printf("\n");
        }
  printf("\n");
  printf("Greutatea maxima este : %i",greutate);*/
  fprintf(fis_out,"%i",greutate);
  // getch();
   return 0; 
}