Cod sursa(job #441351)

Utilizator maria.eniEni Maria-Adina maria.eni Data 12 aprilie 2010 21:29:16
Problema Gutui Scor 10
Compilator c Status done
Runda teme_upb Marime 1.46 kb

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

int main()
{

	int h[256], g[256], rm[256], x[256];
	int i, j, n, H, U, aux, sum=0, k;
	
	FILE* fin;
	FILE* fout;
	
	fin = fopen ("gutui.in", "r");
	fout = fopen ("gutui.out", "w");
	
	fscanf (fin, "%li %li %li", &n, &H, &U);

	for ( i=0; i<n; i++)
		fscanf ( fin, "%li %li", &h[i], &g[i] );
		
	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<n; 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++)
	printf("%li ", g[i]);

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

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