Pagini recente » Cod sursa (job #3032185) | Cod sursa (job #3286382) | Cod sursa (job #2666690) | Cod sursa (job #3248325) | Cod sursa (job #431473)
Cod sursa(job #431473)
#include<stdio.h>
#include<stdlib.h>
struct gutui{
long h;
long g;
long nr_pasi;
int marcat;
};
typedef int (*compfn)(const void*, const void*);
long n, H, U;
int comparatorpasi(struct gutui *a, struct gutui *b){
return (a->nr_pasi - b->nr_pasi);
}
int comparatorg(struct gutui *a, struct gutui *b){
return (b->g - a->g);
}
int main(){
FILE* f = fopen("gutui.in","r");
FILE* g = fopen("gutui.out", "w");
fscanf(f,"%li %li %li",&n,&H,&U);
printf("%li %li %li \n",n,H,U);
struct gutui v[n];
long i;
long max = 0;
for (i = 0 ; i < n ; i++){
fscanf(f,"%li %li", &v[i].h, &v[i].g);
v[i].nr_pasi = (( H - v[i].h ) / U) + 1 ;
if (v[i].h > H) v[i].nr_pasi=0;
if ((max < v[i].nr_pasi) && (v[i].h <= H)) max = v[i].nr_pasi;
v[i].marcat = 0;
}
printf("%li\n", max);
qsort(v, n, sizeof(struct gutui), (compfn)comparatorg);
for (i = 0; i < n; i++)
printf("%li %li %li %li\n", v[i].h, v[i].g, v[i].nr_pasi,max-v[i].nr_pasi);
printf("\n");
qsort(v, n, sizeof(struct gutui), (compfn)comparatorpasi);
for (i = 0; i < n; i++)
printf("%li %li %li\n", v[i].h, v[i].g, v[i].nr_pasi);
printf("\n");
long pas_curent = max;
long suma = 0;
int m,j;
int pasi=1;
int maxim=v[0].g;
int minim=v[0].g;
for (i=0; i<n; i++){
if (v[i].nr_pasi >= pasi){
if (minim > v[i].g) minim = v[i].g;
if (maxim<v[i].g) maxim=v[i].g;
for (j = 0; j < n; j++)
printf("%li %li %li\n", v[j].h, v[j].g, v[j].nr_pasi);
printf("se aduna la suma %li\n", v[i].g);
suma = suma + v[i].g;
pasi++;
printf("pasi=%i\n",pasi);
}
else if (maxim<v[i].g){
suma=suma-minim;
suma=suma+v[i].g;
maxim=v[i].g;
}
}
printf("%li",suma);
fprintf(g,"%li",suma);
fclose(f);
fclose(g);
return 0;
}