Pagini recente » Cod sursa (job #1664775) | Cod sursa (job #2940333) | Cod sursa (job #2663370) | Cod sursa (job #100592) | Cod sursa (job #66893)
Cod sursa(job #66893)
#include <cstdio>
#include <queue>
#define MAX_N 100001
using namespace std;
long N, X, L;
long long unsigned SOL;
struct T
{
long M, D, C;
} A[MAX_N];
class Compar
{
public:
bool operator()(T A, T B)
{
return
A.M < B.M;
}
};
priority_queue <T, vector <T>, Compar> H;
int main()
{
FILE *f = fopen("lupu.in", "rt");
FILE *g = fopen("lupu.out", "wt");
long i, m, max;
for(fscanf(f, "%ld %ld %ld", &N, &X, &L), i=1; i<=N; ++i)
{
fscanf(f, "%ld %ld", &A[i].D, &A[i].C);
A[i].M = A[i].D > X ? -1 : (X - A[i].D) / L;
if(A[i].M != -1)
H.push(A[i]);
}
for(i=1; i<=N; ++i)
{
A[i] = H.top();
H.pop();
}
priority_queue <long> Q;
m = A[1].M;
for(i=1; i<=N; ++i)
{
if(A[i].M == m)
Q.push(A[i].C);
else
{
SOL += Q.top();
Q.pop();
m = A[i].M;
Q.push(A[i].C);
}
}
SOL += Q.top();
fprintf(g, "%llu", SOL);
fclose(f);
fclose(g);
return 0;
}