Cod sursa(job #438269)

Utilizator oana.fercheoana maria oana.ferche Data 10 aprilie 2010 17:06:56
Problema Gutui Scor 0
Compilator c Status done
Runda teme_upb Marime 3.5 kb
#include<stdio.h>
#include<conio.h>
#define MAX 100000
int main(){
    
    unsigned int N,H,U;
    unsigned int kg[MAX];
    unsigned int alt[MAX]; //inaltimea la care se afla gutuile
    
    FILE* f;
    
    f=fopen("gutui.in","r");
    
    fscanf(f,"%d",&N);
    fscanf(f,"%d",&H);
    fscanf(f,"%d",&U);
    
    unsigned int i,j;
    unsigned int kgmax;
    unsigned int hc;//inaltimea curenta
    unsigned int val[MAX];           //"valorile" asociate gutuilor
    char culese[MAX];
    
    for(i=0;i<N;i++)
    {
                    fscanf(f,"%d",&alt[i]);
                    fscanf(f,"%d",&kg[i]);
                    val[i] = alt[i] + kg[i];
                    culese[i]=0;
    }
    
    unsigned int total=0, max;
    unsigned int hmax=H;  //inaltimea maxima pana la care poate ajunge Gigel
    unsigned int culeg;
    unsigned int hcules;
    
    for(i=H;i>0;i-=U)
    {
                    hcules=0;   
                    max=0;
                    culeg=0;
                    for(j=0;j<N;j++)
                    {
                           if(!culese[j]){
                                                   
                                   if (alt[j]<=hmax)
                                      {
                                                 if( alt[j]>=i-U && alt[j]<i)
                                                 {
                                                 if( kg[j]>max)
                                                     {
                                                               
                                                               max=kg[j];
                                                               culeg=j;
                                                               hcules=alt[j];
                                                               
                                                     }
                                                 }
                                                 else
                                                 {
                                                     if(alt[j]>hcules)
                                                                     if(kg[j]>max)
                                                                     {
                                                                                 
                                                                                  max=kg[j];
                                                                                  culeg=j;
                                                                                  hcules=alt[j];
                                                                                 
                                                                     }
                                                 }
                                      }
                           }
                                           
                    }
                   // printf("%d\n",kg[culeg]);
                 
                    if(max!=0){
               //    printf("culeg gutuia %d cu greutatea %d\n",culeg, kg[culeg]);
                 //  getch();
                    culese[culeg]=1;
                    total+=kg[culeg];
                    hmax -= U;
                    }
                    }
//printf("total=%d",total);
//getch();
//getch();
  FILE* g;
  g=fopen("gutui.out","w");
  fprintf(g,"%d",total);
  fclose(f);
  fclose(g);
  return 0;
}