Cod sursa(job #435073)

Utilizator ctvalentinMarcu Valentin ctvalentin Data 6 aprilie 2010 21:12:09
Problema Gutui Scor 0
Compilator c Status done
Runda teme_upb Marime 1.41 kb
//#include<conio.h>
#include<stdio.h>
//int max[];
int N=0, H=0, U=1, nr=0, *ordh, *ordg, hh=0, gg=0, i, j, j2, k, suma, a, b, aux;
FILE *f, *g;
int main()
{
    f = fopen("gutui.in1.txt","r");
    if(!f) {printf("eroare f"); return 1;}
    g = fopen("gutui.out","w");
    if(!f) {printf("eroare g"); return 2;}
    fscanf(f,"%i", &N);
    fscanf(f,"%i", &H);
    fscanf(f,"%i", &U);
    ordh = calloc (N,sizeof(int));
    ordg = calloc (N,sizeof(int));
    for(i=0;i<N;i++)
    {
          
         // printf("\n nivelul %i : %i ", j, max[j][0]);
          fscanf(f,"%i", &a);  //a este inaltime initiala
          fscanf(f,"%i", &b);  //b este greutatea
          j= a/U;
          for(k=0; k<N, ordg[k]>0; k++) 
              {   j2=ordh[k]/U;
                  if(j>j2) { aux=a; a=ordh[k]; ordh[k]=aux; aux=b; b=ordg[k]; ordg[k]=aux;}
                  if(j==j2 && b>ordg[k]) { aux=a; a=ordh[k]; ordh[k]=aux; aux=b; b=ordg[k]; ordg[k]=aux;}
              }
          ordh[k]=a; ordg[k]=b;
          //ordh[hh++]=a;
          //ordg[gg++]=b;
     }
  /*    for(i=0;i<N;i++) printf("%i ", ordh[i]);
      printf("\n");
      for(i=0;i<N;i++) printf("%i ", ordg[i]);
  */   
     nr=0; suma=0;
     for(i=0;i<N;i++)
     {
         while(ordh[i]+nr > H) i++;
         suma+=ordg[i];
         nr+=U;
     }  
   // printf("\n%i ", suma);
     fprintf(g,"%i", suma);
  //  getch();
     return 0;
}