Cod sursa(job #436595)

Utilizator cg1700Catalin Geosu cg1700 Data 8 aprilie 2010 17:59:46
Problema Gutui Scor 10
Compilator c Status done
Runda teme_upb Marime 1.61 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;
  if(u*i>h) break;
  for(j=0;j<n;j++)
  {//printf("maxh=%d\n",(h-maxh)/u);
  if(hg[j]<=h-u*i){
   if(((h-hg[j])/u!=(h-maxh)/u)&&(hg[j]>maxh)&&(v[j]!=1)) {//printf("maxhh=%.0f",maxh);
                                          maxh=hg[j];
                                          maxw=wg[j];
                                          contor=j;
                                          }
    else
       if(((h-hg[j])/u==(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("maxh=%ld\n",h-u*i);
  // printf("inl=%d\n",maxh);
   //printf("gre=%d\n",maxw);
                }
fprintf(g,"%d",greutate);
       fclose(f);
      fclose(g);
      return 0;
}