Pagini recente » Cod sursa (job #429353) | Cod sursa (job #2494245) | Cod sursa (job #2495043) | Cod sursa (job #625153) | Cod sursa (job #429623)
Cod sursa(job #429623)
#include<stdio.h>
#include<stdlib.h>
struct gutui{
int h;
int g;
int nr_pasi;
int marcat;
};
typedef int (*compfn)(const void*, const void*);
int n, H, U;
int comparatorpasi(struct gutui *a, struct gutui *b){
return (b->nr_pasi - a->nr_pasi);
}
int comparatorg(struct gutui *a, struct gutui *b){
return (b->g - a->g);
}
//sortare dupa numarul de pasi pana nu se mai ajunge la gutui
int main(){
FILE* f=fopen("gutui.in","r");
FILE* g=fopen("gutui.out", "w");
fscanf(f,"%i %i %i",&n,&H,&U);
//printf("%i %i %i \n",n,H,U);
struct gutui v[n+1];
int i;
int max=0;
for (i = 0 ; i < n ; i++){
fscanf(f,"%i %i", &v[i].h, &v[i].g);
v[i].nr_pasi =(( H - v[i].h ) / U) + 1 ;
if (max<v[i].nr_pasi) max=v[i].nr_pasi;
v[i].marcat=0;
}
printf("%i\n", max);
for (i = 0 ; i < n ; i++)
printf("%i %i\n", v[i].h, v[i].g);
qsort(v, n, sizeof(struct gutui), (compfn)comparatorg);
for (i=0; i<n; i++)
printf("%i %i %i\n", v[i].h, v[i].g, v[i].nr_pasi);
int pas_curent=max;
int suma=0;
int m,j;
int cate[max];
for (i=0 ; i<max; i++)
cate[i]=0;
j=max;
for (i = 0 ; i < max ; i++){
cate[i]=i+1;
j--;
}
i=0;
int marcati=0;
while ( (pas_curent > 0) && (i < n) && (marcati < max) ){
for (j=0; j<max; j++)
printf("%i ", cate[j]);
printf("\n");
printf("%i\n",v[i].nr_pasi);
printf("\n");
if (cate[v[i].nr_pasi-1] > 0){
printf("%i\n",v[i].g);
v[i].marcat=1;
cate[v[i].nr_pasi-1]--;
marcati++;
}
printf("\n");
i++;
}
qsort(v,n,sizeof(struct gutui),(compfn)comparatorpasi);
printf("\n");
for (i=0; i<n; i++){
if (v[i].marcat==1) suma=suma+v[i].g;
printf("%i %i %i \n", v[i].g, v[i].nr_pasi, v[i].marcat);
}
//printf("%i",suma);
fprintf(g,"%i",suma);
close(f);
close(g);
return 0;
}