Pagini recente » Cod sursa (job #764140) | Cod sursa (job #140984) | Cod sursa (job #215315) | Cod sursa (job #694767) | Cod sursa (job #434780)
Cod sursa(job #434780)
//#include<conio.h>
#include<stdio.h>
//int max[];
int N=0, H=0, U=1, nr=0, i, ii, j, k, aux, r, t, a=0, b=0, suma=0, **max;
FILE *f, *g;
int main()
{
f = fopen("gutui.in","r");
if(!f) {printf("eroare f"); return 1;}
g = fopen("gutui.out","w");
if(!f) {printf("eroare g"); return 2;}
fscanf(f,"%i", &N);
fscanf(f,"%i", &H);
fscanf(f,"%i", &U);
nr = H/U;
max = calloc ((nr+1),sizeof(int*));
for(i=1;i<=nr;i++) max[i] = calloc (nr,sizeof(int));
for(i=0;i<N;i++)
{
// printf("\n nivelul %i : %i ", j, max[j][0]);
fscanf(f,"%i", &a); //a este inaltime initiala
fscanf(f,"%i", &b); //b este greutatea
j= nr - a/U; //j indica ordinea de evaluare
// max[j] = calloc ((nr+1),sizeof(int));
max[j][0]++; r=max[j][0];
for(k=1;k<r;k++)
if(b>max[j][k]) { aux=b; b=max[j][k]; max[j][k]=aux; }
max[j][r]=b;
//max[j][max[j][0]] = b;
//if(b > max[j-1]) max[j-1] = b;
//printf("\n nivelul %i : %i ", j, max[j][0]); sleep(1);
}
//suma=max[1][1]; //prima data
//printf("\nsuma partiala: %i ", suma);
for(i=1;i<nr;i++)
//for(k=1; k<=; k++)
{
//t=0; ii=i;
// suma += max[i][1];
for(ii=i+1;max[ii][0]=0, ii<nr; ii++)
{suma += max[i][ii-i]; }//printf("\nsuma partiala: %i ", suma);}
}
fprintf(g,"%i", suma);
// printf("\n%i ", suma);
free (max);
fclose(f);
fclose(g);
// getch();
return 0;
}