Pagini recente » Cod sursa (job #1430742) | Cod sursa (job #2894917) | Cod sursa (job #166792) | Cod sursa (job #1433707) | Cod sursa (job #66890)
Cod sursa(job #66890)
#include <cstdio>
#include <queue>
#define MAX_N 100001
using namespace std;
long N, X, L, 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;
H.push(A[i]);
}
for(i=1; i<=N; ++i)
{
A[i] = H.top();
H.pop();
}
for(i=1; A[i].M==-1; ++i);
m = A[i].M;
max = A[i].C;
for(; i<=N; ++i)
{
if(A[i].M == m)
{
if(A[i].C > max)
max = A[i].C;
}
else
{
SOL += max;
m = A[i].M;
max = A[i].C;
}
}
SOL += max;
fprintf(g, "%ld", SOL);
fclose(f);
fclose(g);
return 0;
}