Cod sursa(job #436521)

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

int main()                 //n nr gutui, h inaltimea maxima, u inaltime ridicare
{    FILE *f, *g;
    long int n;
    float h,u;
    float hg[100000] ,wg[100000],v[100000];
    long int i;
    long int j;
    //float f1,f2;
    float maxh,maxw;
    long int contor=0;
    float greutate=0;
    f=fopen("gutui.in","r");
    g=fopen("gutui.out","w");
    fscanf(f,"%ld",&n);
    fscanf(f,"%f",&h);
    fscanf(f,"%f",&u);
     for(i=0;i<n;i++)
     {fscanf(f,"%f",&hg[i]);
      fscanf(f,"%f",&wg[i]);
       v[i]=0;}
    maxh=0;
    maxw=0;
for(i=0;i<n;i++)
                {
//printf("\n");
if (maxh>(h-u*i))
   maxh=floor(h-u*i);
   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,"%.0f",greutate);
       fclose(f);
      fclose(g);
      return 0;
}