QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#719680 | #8648. Tower | hhoppitree | 0 | 1425ms | 143776kb | C++17 | 4.1kb | 2024-11-07 07:53:15 | 2024-11-07 07:53:16 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5;
long long res[N], id[N], mn[1 << 21], lz[1 << 21];
void build(int k, int l, int r) {
mn[k] = (l == 1 ? 0 : 3e18);
if (l == r) return;
int mid = (l + r) >> 1;
build(k << 1, l, mid);
build(k << 1 | 1, mid + 1, r);
}
void pushdown(int k) {
if (!lz[k]) return;
mn[k << 1] = 3e18, lz[k << 1] = 1;
mn[k << 1 | 1] = 3e18, lz[k << 1 | 1] = 1;
lz[k] = 0;
}
void modify(int k, int l, int r, int x, int y) {
if (l > y || r < x) return;
if (l >= x && r <= y) {
mn[k] = 3e18, lz[k] = 1;
return;
}
pushdown(k);
int mid = (l + r) >> 1;
modify(k << 1, l, mid, x, y);
modify(k << 1 | 1, mid + 1, r, x, y);
mn[k] = min(mn[k << 1], mn[k << 1 | 1]);
}
void update(int k, int l, int r, int x, long long y) {
mn[k] = min(mn[k], y);
if (l == r) return;
pushdown(k);
int mid = (l + r) >> 1;
if (x <= mid) update(k << 1, l, mid, x, y);
else update(k << 1 | 1, mid + 1, r, x, y);
}
long long query(int k, int l, int r, int x, int y) {
if (l > y || r < x) return 3e18;
if (l >= x && r <= y) return mn[k];
pushdown(k);
int mid = (l + r) >> 1;
return min(query(k << 1, l, mid, x, y), query(k << 1 | 1, mid + 1, r, x, y));
}
signed main() {
int n, q;
long long D, A, B;
scanf("%d%d%lld%lld%lld", &n, &q, &D, &A, &B);
vector< pair<long long, int> > p;
vector<long long> lsh;
for (int i = 1; i <= n; ++i) {
long long l, r; scanf("%lld%lld", &l, &r);
p.push_back({l, 0}), p.push_back({r + 1, 0});
lsh.push_back(l % D), lsh.push_back((r + 1) % D);
}
for (int i = 0; i < 100000000; i += D) {
p.push_back({i, q + 1});
}
lsh.push_back(0), lsh.push_back(D - 1);
p.push_back({0, q + 1});
for (int i = 1; i <= q; ++i) {
long long x; scanf("%lld", &x);
id[i] = x;
p.push_back({x, i});
lsh.push_back(x % D);
res[i] = 3e18;
}
sort(lsh.begin(), lsh.end());
lsh.erase(unique(lsh.begin(), lsh.end()), lsh.end());
sort(p.begin(), p.end());
auto getId = [&](long long x) {
return lower_bound(lsh.begin(), lsh.end(), x) - lsh.begin() + 1;
};
build(1, 1, lsh.size());
set< pair<int, int> > S = {{0, D - 1}};
long long tag = 0;
for (int m = p.size(), i = 0, j, nw = 0; i < m; ) {
j = i;
auto preMax = [&](int x) {
int val = 1;
if (!S.empty() && (S.begin() -> first) <= x) {
auto it = --S.lower_bound({x + 1, 0});
val = (it -> second) + 1;
}
update(1, 1, lsh.size(), x, query(1, 1, lsh.size(), val, x));
};
while (j < m && p[j].first / D == p[i].first / D) {
preMax(getId(p[j++].first % D));
}
preMax(lsh.size());
if (i) update(1, 1, lsh.size(), 1, query(1, 1, lsh.size(), lsh.size(), lsh.size()) + A * D - B);
S.clear();
int lst = 1;
vector< pair<int, int> > qr;
while (i < j) {
int tid = getId(p[i].first % D);
if (nw) {
modify(1, 1, lsh.size(), lst, tid - 1);
S.insert({lst, tid - 1});
}
nw ^= !p[i].second;
lst = tid;
if (p[i].second) qr.push_back({p[i].first, p[i].second});
++i;
}
if (nw) {
modify(1, 1, lsh.size(), lst, lsh.size());
S.insert({lst, lsh.size()});
}
for (auto [x, y] : qr) {
int tid = getId(x % D);
preMax(tid), res[y] = tag + query(1, 1, lsh.size(), tid, tid);
}
if (i != m && p[i].first / D != p[i - 1].first / D + 1) {
if (nw) break;
S.clear();
tag += (p[i + 1].first / D - p[i].first / D - 1) * min(A * D - B, 0ll);
}
}
for (int i = 1; i <= q; ++i) {
if (res[i] > 2e18) puts("-1");
else printf("%lld\n", res[i] + id[i] % D * A + id[i] / D * B);
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 0
Time Limit Exceeded
Test #1:
score: 5
Accepted
time: 207ms
memory: 20516kb
input:
2000 200000 500 66309 387245 91 122 793 1029 1127 1131 1304 1611 2007 2039 2601 2701 2906 3052 3253 3263 3495 3609 4157 4225 4283 4283 4757 4766 4786 4847 4885 5086 5326 5342 5607 5750 5847 5877 6093 6230 6548 6793 7206 7308 7413 7419 7752 7780 8244 8410 8501 8515 9335 9447 9512 9514 9602 9906 10076...
output:
-1 -1 1545376776 -1 1355518146 -1 -1 1538578776 1124179254 736677313 275840218 -1 314646902 120181124 592802647 1470145222 1194355416 630012616 541479470 1380556431 748297307 1579324340 83071935 -1 547672724 766967273 940718126 967114418 448357717 -1 208077708 264694996 68332763 -1 699361243 1542138...
result:
ok 200000 lines
Test #2:
score: 5
Accepted
time: 205ms
memory: 20864kb
input:
2000 200000 500 45649 229891 123 232 663 994 1023 1041 1065 1065 1523 1542 1962 1983 2044 2066 2449 2453 2589 2591 2788 2810 3207 3418 3666 3685 3944 3945 4256 4320 4699 4706 4915 4950 5196 5207 5271 5545 5705 5707 5867 6034 6273 6328 6364 6380 6764 6787 6974 7007 7363 7365 7632 7648 7754 7924 7954 ...
output:
-1 -1 1044862158 349767467 -1 -1 -1 -1 534260754 853076992 514160380 514034955 -1 -1 680989150 557376047 -1 410302211 -1 -1 14156128 -1 -1 656642980 -1 335413929 465525211 1047741337 1007928386 -1 183280077 -1 842399625 553981561 -1 -1 486838795 823208939 597570650 68518820 -1 -1 36379839 -1 4959492...
result:
ok 200000 lines
Test #3:
score: 5
Accepted
time: 206ms
memory: 19964kb
input:
2000 200000 500 11 228852 288 470 648 922 1193 1288 1509 1516 1792 1915 2023 2061 2443 2477 2512 2693 2735 2860 3176 3196 3260 3363 3622 3658 3939 3988 4177 4223 4470 4541 4640 4789 4812 4850 5167 5246 5443 5594 5692 5804 5875 5982 6265 6286 6416 6609 6816 6833 6928 7130 7298 7305 7401 7403 7778 781...
output:
61754766 1843455 193255572 95486804 80338946 188441144 126474653 -1 119132183 159054071 107422913 158596895 105813337 -1 166163718 -1 165014783 -1 2988793 146889891 -1 75748618 -1 -1 -1 109483978 -1 112469548 163413919 67263527 170983140 128997679 168000122 -1 186380233 151702042 42025050 -1 1556077...
result:
ok 200000 lines
Test #4:
score: 5
Accepted
time: 200ms
memory: 20924kb
input:
2000 200000 500 123 507044 13 349 778 805 1289 1419 2069 2074 2126 2129 2299 2392 2629 2629 3035 3054 3171 3184 3225 3381 3967 4100 4222 4225 4432 4603 4741 4745 4972 5123 5239 5245 5412 5530 5737 5757 5859 6162 6286 6289 6452 6542 6820 6825 6940 6974 7327 7328 7686 7781 8122 8169 8499 8909 8957 896...
output:
23238378 -1 320316781 492915201 -1 118374346 -1 118865646 -1 27397189 413766267 33059543 89523552 84434908 75590808 178982529 452655813 119364449 76127495 -1 -1 296028030 320308540 475355659 -1 210903877 288320772 388500820 -1 149739573 428228318 -1 -1 -1 -1 478454749 -1 -1 -1 -1 268399317 -1 310981...
result:
ok 200000 lines
Test #5:
score: 5
Accepted
time: 200ms
memory: 20224kb
input:
2000 200000 500 367 183500 395 476 616 705 1068 1085 1392 1462 1898 2004 2105 2124 2266 2553 2678 2684 2845 2855 3145 3188 3497 3630 3705 3708 3857 3995 4221 4223 4405 4642 4724 4730 4993 5199 5224 5225 5325 5637 5722 5735 6111 6152 6322 6341 6464 6694 6764 6838 7013 7174 7249 7261 7423 7713 7803 78...
output:
-1 81789987 195275562 134586974 172718274 -1 77090919 -1 169680615 26763842 81273618 74582841 -1 -1 164912918 -1 45100263 25295842 5720062 138829861 -1 23310005 142354162 158449681 -1 43546018 5823556 -1 -1 -1 -1 125462620 -1 25779548 121436630 4706408 -1 -1 -1 87290583 -1 47107386 94590213 17249256...
result:
ok 200000 lines
Test #6:
score: 5
Accepted
time: 1402ms
memory: 141632kb
input:
195716 197150 20 41515 610194 34 34 36 36 38 38 40 40 42 42 44 44 46 46 83 83 85 85 87 87 89 89 91 91 93 93 95 95 97 97 99 99 104 104 106 106 108 108 110 110 112 112 114 115 118 118 120 120 132 132 134 134 136 136 138 138 140 140 142 142 144 144 146 146 148 148 150 150 175 175 177 177 179 179 181 18...
output:
27145048833 -1 20311977145 5823894704 12611222982 10375331362 -1 4666825214 8294213599 7946746140 15043381651 12084461892 2564209663 -1 2889605968 30371230407 13809822492 10059353510 20452787039 -1 186985672 -1 -1 -1 14667164575 21798169916 2551478619 -1 2357959404 24230797781 5359696913 11480637002...
result:
ok 197150 lines
Test #7:
score: 5
Accepted
time: 1425ms
memory: 142024kb
input:
194401 196154 20 81884 184176 27 27 29 29 31 31 33 33 35 35 37 37 39 39 41 41 43 43 45 45 103 106 110 110 114 115 119 119 121 121 123 123 125 126 128 128 130 130 132 132 135 135 137 137 170 171 173 173 175 175 179 179 181 181 183 184 186 186 203 203 205 205 207 207 210 210 212 212 214 214 216 216 22...
output:
-1 7397081928 2079536780 1740817712 7985105512 8791917840 -1 2108310564 3818312684 3403790452 -1 -1 7282843676 8094061364 8075949632 -1 4202973208 -1 5158569260 5191129360 -1 5769244224 -1 5536679820 7825620684 4417835300 10616377912 -1 7443886064 5554791552 7631714344 4169124128 10019841164 8876887...
result:
ok 196154 lines
Test #8:
score: 5
Accepted
time: 1414ms
memory: 143056kb
input:
197806 197356 20 29644 637771 3 3 5 5 7 7 9 9 11 11 13 13 15 15 17 17 19 19 21 21 71 71 73 73 75 75 77 77 79 79 81 81 83 83 85 85 87 87 89 89 94 94 96 96 98 98 100 100 102 102 104 104 106 107 122 122 124 124 126 126 128 128 131 131 133 133 135 135 156 156 158 158 160 160 163 163 165 165 216 216 218 ...
output:
-1 16958900222 16962903862 -1 -1 30908851790 986967014 7741518462 14743639172 1812847470 -1 7369833863 26993152521 2971365427 -1 -1 -1 -1 26587991346 16925804768 2134704702 17196127075 -1 26659445339 29693622258 812738814 25306954578 27428620967 29707753999 13380005667 1927010073 9821528975 -1 86888...
result:
ok 197356 lines
Test #9:
score: 5
Accepted
time: 1421ms
memory: 141972kb
input:
199268 195219 20 9959 224682 19 21 23 23 26 27 29 31 33 33 35 35 37 37 57 57 59 59 61 61 63 63 65 65 67 67 69 69 71 71 73 73 127 129 131 134 136 138 153 153 155 155 157 157 159 159 161 161 163 163 166 166 196 196 198 198 200 200 202 202 204 204 206 206 208 208 210 210 212 212 214 214 224 224 226 226...
output:
1405185734 2296959792 -1 4763754065 -1 7440241155 3592032994 9232017710 -1 2996088597 7328570009 8931662575 7527861716 8627630151 4396636490 4153239129 4674940842 7142306979 5741444947 -1 -1 203363729 5005824000 -1 5999988912 -1 10315869532 2347062895 -1 499028001 -1 6310540106 6132479839 6198718827...
result:
ok 195219 lines
Test #10:
score: 5
Accepted
time: 1405ms
memory: 143776kb
input:
194139 191791 20 37198 743960 1 1 3 3 5 5 7 7 9 9 11 11 13 13 15 15 17 17 19 19 28 28 30 30 32 32 34 34 36 36 39 39 41 41 43 43 45 45 79 79 81 81 83 83 85 85 87 87 89 89 91 91 97 97 103 103 105 105 107 107 109 109 111 111 113 114 116 116 118 119 121 121 124 124 126 126 128 128 130 130 132 132 134 13...
output:
5683965994 30465347990 13469395800 -1 24426289888 -1 3251625972 32267925872 -1 28405583136 32475193128 -1 10144378174 29396203074 33933652312 20332203612 -1 -1 2572204502 10948710528 24839410876 15655745448 4906750982 18881853592 11878734924 10340783614 3981301940 15892771104 36311460066 7953527568 ...
result:
ok 191791 lines
Test #11:
score: 0
Time Limit Exceeded
input:
200000 200000 1 58118 14529 100001 100001 100006 100006 100008 100008 100010 100010 100013 100013 100019 100019 100023 100023 100026 100026 100028 100028 100032 100032 100035 100035 100042 100042 100045 100045 100048 100048 100051 100051 100053 100053 100057 100057 100064 100064 100068 100068 100071...
output:
result:
Subtask #2:
score: 0
Wrong Answer
Test #29:
score: 0
Wrong Answer
time: 3ms
memory: 8468kb
input:
1938 1960 999999 47694 9291 2883622 3085639 3674880 3745876 9982198101 9982517489 19960889157 19960925795 19962228551 19962276101 19964301694 19964730442 19964826417 19965369252 19965984922 19966442459 19968019821 19968213820 19968334967 19968392242 19968426638 19968840337 19969017519 19969109591 19...
output:
2629532778036 1673262710568 2040730384092 -1 936968466312 979181833173 217249154424 -1 3376854733974 453288498306 1191808495257 194772660096 116508067359 1917917563716 2806098123096 -1 1737385084617 1649786307423 1349890612854 3043407203193 2200709215653 -1 1277863523430 538903132932 2788471506279 2...
result:
wrong answer 2nd lines differ - expected: '1625568767553', found: '1673262710568'
Subtask #3:
score: 0
Wrong Answer
Test #44:
score: 0
Wrong Answer
time: 686ms
memory: 53312kb
input:
198085 196577 999999 1 999999 562622 895604 1799586 1975565 2518299 2941986 4934097 5403130 5755102 5996130 6036200 6112534 6391882 6431514 6451793 6555786 6613625 6621089 7130933 7204522 7335426 7522555 7748545 7784568 8184979 8494887 9066856 9178094 9303615 9384897 9716200 9719420 11693951 1183563...
output:
27793636591 -1 722989373174 395967779933 164554928593 340203577240 767735640886 638128931349 808488370439 777661458222 -1 723110350933 756913262477 860152123456 48118745350 734774231229 -1 -1 418133621292 405303496068 890908770677 -1 806542610691 -1 898938307262 -1 805921470285 870381090496 58888076...
result:
wrong answer 2nd lines differ - expected: '139076373265', found: '-1'
Subtask #4:
score: 0
Skipped
Dependency #1:
0%