Cod sursa(job #441814)

Utilizator maria.eniEni Maria-Adina maria.eni Data 13 aprilie 2010 14:04:28
Problema Gutui Scor 10
Compilator c Status done
Runda teme_upb Marime 1.61 kb

#include <stdlib.h>
#include <stdio.h>



	int h[10000], g[10000], rm[10000], x[10000];
	int i, j, H, U, k, aux;
	long int n, sum=0;


int main()
{
	FILE* fin;
	FILE* fout;
	
	fin = fopen ("gutui.in", "r");
	fout = fopen ("gutui.out", "w");
	
	fscanf (fin, "%li %d %d", &n, &H, &U);

	for ( i=0; i<n; i++)
		fscanf ( fin, "%d %d", &h[i], &g[i] );
		
	for( i=0; i<n-1;i++)
         for ( j=i+1; j<n;j++)
             if( g[i] == g[j] )
             {
                        aux = h[i];
						h[i] = h[j];
						h[j] = aux;
			
						aux = g[i];
						g[i] = g[j];
						g[j] = aux;
						}	

	for( i=0; i<n; i++)
           rm[i] = (H-h[i]) / U ;
           
	int max=rm[0];      
    for( i=1; i<n; i++)
      if(max < rm [i])
             max = rm[i];

    for( i=0; i<=max; i++)
         x[i] = 0;

    for( i=0; i<n; i++)
    
      if( h[i] <= H )
      
          if( x[ (H-h[i]) / U ]==0 )
          {
              x[ (H-h[i]) / U ] = g[i];
             // printf("- %d -", x[(H-h[i]) / U]);
             }
           
      	  else
          for ( k=((H-h[i]) / U )-1 ; k>=0; k--)
                     if( x[k]==0 )
                     {
                         x[ k ] = g[i];
                         //	printf("%d ", x[k]);
                          break;
                      }
                                           
  /*                           
   	for( i=0; i<=max; i++)
	printf("%d ", x[i]);
*/
      for( i=0; i<=max; i++)
           sum = sum + x[i];
      fprintf(fout, "%li", sum);
		
	fclose(fin);
	fclose(fout);
	
return 0;
}