Pagini recente » Cod sursa (job #2463828) | Cod sursa (job #707152) | Cod sursa (job #2385688) | Cod sursa (job #2750713) | Cod sursa (job #1126456)
#include <stdio.h>
#include<stdlib.h>
int mai_mult = 0,cules = 0;
struct gutui
{
int inaltime;
int greutate;
};
struct gutui *v;
int compare(const int * a, const int * b)
{
return *a - *b;
}
void scrieDate(int s)
{
FILE *f = fopen("gutui.out","w");
fprintf(f,"%d",s);
fclose(f);
}
int culege(int nivel,int **mgutui,int dim)
{
int i,gutui_culese = -1,ok = 0;
if( nivel >= dim )
return cules;
if( mgutui[nivel][dim-1] == 0 )
{
mai_mult++;
return culege(nivel+1,mgutui,dim);
}
else
{
for( i = dim-1; i >= dim-mai_mult-1 ; --i )
{
if( mgutui[nivel][i] != 0 )
{
cules += mgutui[nivel][i];
gutui_culese++;
}
else
break;
if( gutui_culese > 0 )
mai_mult = gutui_culese;
}
}
return culege(nivel+1,mgutui,dim);
}
int main()
{
int N,H,U,i,**mgutui,gutui_culese=0,linii,coloana=0,j;
mgutui = (int**)calloc(10000,sizeof(int*));
for( i = 0; i < 10000; i++ )
mgutui[i] = (int*)calloc(10000,sizeof(int));
FILE *f = fopen("gutui.in","r");
fscanf(f,"%d%d%d",&N,&H,&U);
for( linii = 0; linii < N; ++linii )
for( coloana = 0; coloana < N; ++coloana )
mgutui[linii][coloana] = 0;
v = (struct gutui*)calloc(N,sizeof(struct gutui));
for(i = 0; i < N; ++i)
{
fscanf(f,"%d %d",&v[i].inaltime,&v[i].greutate);
linii = (H - v[i].inaltime) / U;
for( coloana = 0; coloana < N ; ++coloana )
{
if( mgutui[linii][coloana] == 0)
{
mgutui[linii][coloana] = v[i].greutate;
break;
}
}
}
for( i = 0 ; i < N; ++i)
qsort ( mgutui[i] , N, sizeof(int), compare);
gutui_culese = culege(0,mgutui,N);
//printf("[[ %d ]]",gutui_culese);
scrieDate(gutui_culese);
return 0;
}