Pagini recente » Rezultatele filtrării | Cod sursa (job #436841)
Cod sursa(job #436841)
#include <stdio.h>
#include <stdlib.h>
typedef struct{
int inaltime;
int greutate;
}gutui;
/*int compare (const void *a, const void *b){
const gutui *item1=a,*item2=b;
if (item1->inaltime <item2->inaltime)
return 1;
else if (item1->inaltime > item2->inaltime)
return -1;
else
return 0;
}*/
int compare (const void *a, const void *b){
gutui *item1 = (gutui*)a;
gutui *item2 = (gutui*)b;
//printf("ggggg %d\n",item1->inaltime);
return -(item1->inaltime - item2->inaltime);
}
int main(){
FILE *fin=fopen("gutui.in","r");
FILE *fout=fopen("gutui.out","w");
int n,h,u;
int i,curent=0;
int total=0,max;
fscanf(fin,"%d %d %d",&n,&h,&u);
gutui *v=(gutui*)malloc(n*sizeof(gutui));
for (i=0;i<n;i++)
fscanf(fin,"%d %d",&v[i].inaltime,&v[i].greutate);
qsort(v,n,sizeof(gutui),compare);
//for (i=0;i<n;i++)
//printf("%d %d\n",v[i].inaltime,v[i].greutate);
curent=v[0].inaltime;
while (1){
max=0;
if (curent<v[n-1].inaltime)
break;
for (i=0;i<n;i++){
if (max<v[i].greutate && v[i].inaltime<=curent && v[i].inaltime>=curent-u)
max=v[i].greutate;
}
total+=max;
curent-=u;
}
printf("%d",total);
return 0;
}