Pagini recente » Cod sursa (job #2150240) | Cod sursa (job #990958) | Clasament oni_2016_cl10_ziua2 | Cod sursa (job #2389203) | Cod sursa (job #427557)
Cod sursa(job #427557)
#include <stdio.h>
#include <stdlib.h>
typedef struct fruct{
int greutate;
int inaltime;
}fruct;
int compare (const void * a, const void * b)
{
return ( ((fruct*)b)->greutate - ((fruct*)a)->greutate );
}
int main(){
FILE* f,*g;
int j;
f=fopen("gutui.in","rt");
g=fopen("gutui.out","wt");
int n,h,u;
fscanf(f,"%d%d%d",&n,&h,&u);
int interv=h/u;
int height;
fruct* v;
v=(fruct*)malloc(100000*sizeof(fruct));
int i;
for(i=0;i<n;i++){
fscanf(f,"%d%d\n",&height,&v[i].greutate);
v[i].inaltime=interv-height/u;
}
qsort (v, n, sizeof(fruct), compare);
int ponderi[100000];
int hits[100000];
for(i=0;i<n;i++){
ponderi[i]=i+1;
hits[i]=0;
}
int s=0;
for(i=0;i<n;i++){
if(ponderi[v[i].inaltime-1]!=0){
s+=v[i].greutate;
hits[v[i].inaltime-1]++;
if(hits[v[i].inaltime-1]>1){
for(j=0;j<n;j++) ponderi[j]--;
}else ponderi[v[i].inaltime-1]--;
}
}
fprintf(g,"%d",s);
fclose(f);
fclose(g);
}