Cod sursa(job #436547)

Utilizator cg1700Catalin Geosu cg1700 Data 8 aprilie 2010 17:30:18
Problema Gutui Scor 10
Compilator c Status done
Runda teme_upb Marime 1.55 kb
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <stdint.h>

int main()                 //n nr gutui, h inaltimea maxima, u inaltime ridicare
{    FILE *f, *g;
    long int n;
    uint32_t h,u;
    uint32_t hg[100000] ,wg[100000],v[100000];
    long int i;
    long int j;
    //uint32_t f1,f2;
    uint32_t maxh,maxw;
    long int contor=0;
    uint32_t greutate=0;
    f=fopen("gutui.in","r");
    g=fopen("gutui.out","w");
    fscanf(f,"%ld",&n);
    fscanf(f,"%d",&h);
    fscanf(f,"%d",&u);
     for(i=0;i<n;i++)
     {fscanf(f,"%d",&hg[i]);
      fscanf(f,"%d",&wg[i]);
       v[i]=0;}
    maxh=0;
    maxw=0;
for(i=0;i<n;i++)
                {
//printf("\n");
   maxh=0;
   maxw=0;
  for(j=0;j<n;j++)
  {//printf("maxh=%.0f\n",maxh);
  if(hg[j]<=h-u*i){
   if((floor((h-hg[j])/u)!=floor((h-maxh)/u))&&(hg[j]>maxh)&&(v[j]!=1)) {//printf("maxhh=%.0f",maxh);
                                          maxh=hg[j];
                                          maxw=wg[j];
                                          contor=j;
                                          }
    else
       if((floor((h-hg[j])/u)==floor((h-maxh)/u))&&(wg[j]>maxw)&&(v[j]!=1)) {maxh=hg[j];
                                              maxw=wg[j];
                                              contor=j;
                                             }
   }
              }
   //if(mem==maxh) break;
   v[contor]=1;
   greutate=greutate+maxw;
   //printf("gre=%.0f\n",greutate);
                }
fprintf(g,"%d",greutate);
       fclose(f);
      fclose(g);
      return 0;
}