Cod sursa(job #438270)
Utilizator | Data | 10 aprilie 2010 17:07:30 | |
---|---|---|---|
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;
}