Pagini recente » Cod sursa (job #1662334) | Cod sursa (job #1580448) | Cod sursa (job #963075) | Cod sursa (job #1481050) | Cod sursa (job #430731)
Cod sursa(job #430731)
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
vector <long> h;
struct oaie{
long a,t;
}o[200000];
int main()
{
long smax=0,n,x,l,i,d,tmax=0,j,k=0,z;
FILE *f=fopen("lupu.in","r");
FILE *g=fopen("lupu.out","w");
fscanf(f,"%ld %ld %ld",&n,&x,&l);
if(l==0)
for(i=0; i<n;i++) {
fscanf(f,"%ld %ld",&d,&z);
smax+=z;
}
else {
for(i=0; i<n; i++) {
fscanf(f,"%ld %ld",&d,&o[i].a);
o[i].t=(x-d)/l+1;
if(o[i].t>tmax) tmax=o[i].t;
}
//for(i=0; i<n; i++) printf("%d\n",o[i].t);
//printf("%d\n",tmax);
for(i=tmax; i>=1; i--) {
for(j=0; j<n;j++)
if(o[j].t==i) {
h.push_back(o[j].a);
k++;
}
/*printf("%d:\n",i);
for(z=0; z<k; z++) printf("%d ",h[z]);*/
make_heap(h.begin(),h.end());
//printf("%d ",h.front());
smax+=h.front();
pop_heap(h.begin(),h.end());
h.pop_back();
//printf("\n");
}
}
fprintf(g,"%ld",smax);
fclose(f);
fclose(g);
return 0;
}