Pagini recente » Cod sursa (job #1612189) | Istoria paginii utilizator/anna_cristina | Cod sursa (job #1789899) | Cod sursa (job #613630) | Cod sursa (job #438223)
Cod sursa(job #438223)
#include <stdlib.h>
#include <stdio.h>
typedef struct{
int h;
int g;
}gutuie;
int compare(const void *a,const void *b){
gutuie * first=(gutuie *) a;
gutuie * second=(gutuie *) b;
return (second->g - first->g);
}
int main(){
gutuie sir[100000];
int i;
FILE *fp=fopen("gutui.in","r");
FILE *fp1=fopen("gutui.out","w");
char s[80];
fgets(s,80,fp);
char *sep=" ";
int N=atoi(strtok (s,sep));
int H=atoi(strtok (0,sep));
int U=atoi(strtok (0,sep));
int n=0;
int niv;
int * a= (int*) calloc (H/U+2, sizeof(int) );
while ( fgets(s,80,fp) != NULL ){
sir[n].h=atoi(strtok (s,sep));
sir[n].g=atoi(strtok (0,sep));
niv=(H-sir[n].h)/U+1;
a[niv]++;
n++;
}//end while
fclose (fp);
int g=0;
qsort(sir,N,sizeof(gutuie),compare);
int nr=0;
//for( i=H/U;i>=1;i--)
// printf("%d ",a[i]);
// if (a[i]!=0) {
// }
for(i=1;i<=H/U;i++){
printf("%d ",a[i]);
if (a[i]!=0) {
if (a[i]<(H/U-i))
nr=nr+(H/U-i);
else
nr=nr+(H/U-i);
a[i]=0;
}
}
int max=0;
printf("bauuu %d bauu",nr);
int nr1=0;
for( i=0; i<N;i++){
if (nr1==nr) break;
printf("%d %d\n", sir[i].h, sir[i].g);
n=(H-sir[i].h)/U+1;
while ((a[n]!=0) && (n>0))
n--;
if (n>max) max=n;
if (n>0) {
a[n]=sir[i].g;
nr1++;
printf("bau\n");}
}
for (i=1; i<=max+1; i++){
printf("%d %d %d\n", a[i], sir[i-1].g, sir[i-1].h);
if (a[i]!=0)
g=g+a[i];
}
printf("%d\n",g);
fprintf(fp1,"%d",g);
fclose(fp1);
}