Cod sursa(job #442114)

Utilizator carl1ontzataBacioi Florentina carl1ontzata Data 13 aprilie 2010 21:31:38
Problema Gutui Scor 0
Compilator c Status done
Runda teme_upb Marime 6.37 kb
/*U centimetri (cu cat se ridica crengile copacului la fiecare gutuie culeasa
H inaltimea maxima (la care poate ajunge Gigel cel cu capu chel
N-nr gutui din copac
g - greutatea unei gutui
fisier intrare avem:
       N       H    U
       u1     g1
       ....
       uN     gN 
       
       
fisier iesire vom avea:
       greutatea maxima pe care o poate culege Gigel( ceva gen suma celor mai bine alese gutui)
       
       
*/

# include <stdio.h>
# include <stdlib.h>
# include <string.h>
int max(int x,int y)
{
    int max=0;
    if(x<y)
           max=y;
    else
           max=x;    
}

void sortare(int x[],int n)
{
 int temp,i,j;
 for(i=0;i<n-1;i++)
 for(j=i+1;j<n;j++)
         if (x[i]<x[j]){
            temp=x[i];
            x[i]=x[j];
            x[j]=temp;
            }
}

int main()
{
    int greu,max1=0,max2=0,max3=0,max4=0,i=0,aux=0,H, U, N, u[20], g[20];
    int s=0,max5=0,max6=0,max7=0,max8=0,max9=0,max10=0,max11=0;
    FILE *f1,*f2;
    f1=fopen("gutui.in","r");
    f2=fopen("gutui.out","w");
    fscanf(f1,"%d %d %d",&N,&H,&U);
//    printf("N=%d H=%d U=%d\n",N,H,U);
    for(i=0;i<N;i++)
              {fscanf(f1,"%d %d",&u[i],&g[i]);
      //        printf(" %d %d\n",u[i],g[i]);       
}

/*for (i=0;i<N;i++){
      printf(" %d",g[i]);
      }
        printf("\n");
  */      
        

/*for(i=1;i<=N;i++)
                   { if(u[i]>(H-10)&& u[i]<=H && max1<g[i]){
                                         max1=g[i];
                                         s=s+max1;}

                    printf("%d %d\n",max1,s);                     
                    }
                    printf("\n");
                    printf("\n");
                    printf("\n");*/
    //   sortare(u,i);
/*       for (i=0;i<N;i++)
              printf(" %d",u[i]);
              printf("\n");*/
// poz=0;
        for (i=0;i<N;i++)            
        if(u[i]>90 && u[i]<=100 && max1<g[i])
                    {max1=g[i];
//                     poz=i;
                     s=s+max1;
                     u[i]=u[i]+10;
                     }
                     
                   //    printf("%d\n",max1);
        for (i=0;i<N;i++)
        if(u[i]>80 && u[i]<=90 && max2<g[i])
                    {max2=g[i];
                     }
                     //  printf("%d\n",max2);
        for (i=0;i<N;i++)                    
        if(u[i]>70 && u[i]<=80 && max3<g[i])
                    {max3=g[i];
//                     poz=i;
                     }
                     
        for (i=0;i<N;i++)                    
        if(u[i]>60 && u[i]<=70 && max4<g[i])
                    {max4=g[i];
//                     poz=i;
                     }
                     
        for (i=0;i<N;i++)                    
        if(u[i]>50 && u[i]<=60 && max5<g[i])
                    {max5=g[i];
//                     poz=i;
                     }
                     
        for (i=0;i<N;i++)                    
        if(u[i]>40 && u[i]<=50 && max6<g[i])
                    {max6=g[i];
//                     poz=i;
                     }
                     
        for (i=0;i<N;i++)                    
        if(u[i]>40 && u[i]<=50 && max7<g[i])
                    {max7=g[i];
//                     poz=i;
                     }
        for (i=0;i<N;i++)                    
        if(u[i]>30 && u[i]<=40 && max8<g[i])
                    {max8=g[i];
//                     poz=i;
                     }
        for (i=0;i<N;i++)                    
        if(u[i]>20 && u[i]<=30 && max9<g[i])
                    {max9=g[i];
//                     poz=i;
                     }

        for (i=0;i<N;i++)                    
        if(u[i]>10 && u[i]<=20 && max10<g[i])
                    {max10=g[i];
//                     poz=i;
                     }
                     
        for (i=0;i<N;i++)                    
        if(u[i]>0 && u[i]<=10 && max11<g[i])
                    {max11=g[i];
//                     poz=i;
                     }
                      // printf("%d\n",max3);
        s=s+max1+max2+max3+max4;
        s=s+max5+max6+max7+max8;
        s=s+max9+max10+max11;
        //+max5+max6+max7+max8+max9+max10+max11;
  //      if(max3!= 0)  s=s+max3;
        fprintf(f2,"%d",s);
/*. while(!feof(f1)){
    fscanf(f1,"%d %d",&u[i++],&g[i++]);
    printf("%d %d\n",u[i],g[i]);       
  }*/ 
  
    fclose(f1);
	fclose(f2);
    //getchar();
    return 0;

}
/*    Bosilca Adrian: pai eu am sortat in functie de greutati
carli flory: si le ai luat pe alea mai mari?
Bosilca Adrian: si paoi am folosit un vector auxiliar
Bosilca Adrian: da
carli flory: sau ai facut o medie ponderata
Bosilca Adrian: in oridne descrescatoare
carli flory: cred ca ar fi mers
Bosilca Adrian: pai nu prea merge asa pt k trebuie sa le iei exact pe alea cele mai importante
carli flory: adica pe cele mai grele
Bosilca Adrian: da
carli flory: si practic
carli flory: nu te intereseaza decat sa le iei pe cele mai grele
carli flory: pana se ridica crengile la inaltimea H
Bosilca Adrian: da dar nu e chiar asa simplu
carli flory: pai dk ar fi fost asa
carli flory: as fi facut-o matematic
carli flory: 
carli flory: 
carli flory: dar
carli flory: ..
carli flory: sigur mai e o manevra
carli flory: ca poate 2 cantaresc mai mult si se ridica cat o gutuie mai putin grea
Bosilca Adrian: pt ca de ex daca ai o gutuie care e jos cea mai grea
Bosilca Adrian: pe aia o iei mai tarziu, k poate altele sunt mai sus su dupa nu mai ajungi la ele
carli flory: pai si le sortezi si in functie de inaltime?
carli flory: ca eu inteleg ce zici u
carli flory: dar 
carli flory: in implementare nu prea
carli flory: asa teoretic da
Bosilca Adrian: pai daca faci cum am facut eu
Bosilca Adrian: de ex eu am un vector auxiliar in care retin ce nivele ocup
Bosilca Adrian: multi au facut ordonat dupa inaltimi
Bosilca Adrian: si apoi au luat pe cazuri greutatile, nu stiu exact cum
carli flory: pai da inteleg ce zici u
carli flory: dar ar fi ceva gen
carli flory: daca g[i] e f mare si u[i]  f mic
carli flory: se ia la sfarist
carli flory: dar nu prea imi daiu seama cum se scrie 
Bosilca Adrian: pai eu o trec in vectorul auxiliar pe pozitia corespunzatoare
Bosilca Adrian: si in general verific daca nivelul corespunzator gutui este ocupat si daca e ocupat verific nivelele inferioare

*/