Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <queue>
- #include <vector>
- using namespace std;
- int main() {
- FILE *fin = fopen("landscape.in", "r");
- FILE *fout = fopen("landscape.out", "w");
- long long n, x, y, z;
- fscanf(fin, "%lld %lld %lld %lld", &n, &x, &y, &z);
- long long result = 0;
- priority_queue<long long> q1;
- priority_queue<long long> q2;
- for (int i = 0; i < n; i++) {
- int a, b;
- fscanf(fin, "%d %d", &a, &b);
- while (a > b) {
- long long cost = y;
- if (q2.size() && -q2.top() + i * z < y) {
- cost = -q2.top() + i * z;
- q2.pop();
- }
- result += cost;
- q1.push(i * z + cost);
- a--;
- }
- while (b > a) {
- long long cost = x;
- if (q1.size() && -q1.top() + i * z < x) {
- cost = -q1.top() + i * z;
- q1.pop();
- }
- result += cost;
- q2.push(i * z + cost);
- b--;
- }
- }
- fprintf(fout, "%lld\n", result);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement