QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#585196 | #140. Palembang Bridges | isirazeev | 8 | 340ms | 27172kb | C++20 | 2.6kb | 2024-09-23 19:41:02 | 2024-09-23 19:41:02 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
const int maxC = (int) 1e9 + 1;
struct Node {
long long val, add;
Node *l, *r;
Node() : val(0), add(0), l(nullptr), r(nullptr) {};
};
void createSon(Node *v) {
if (v->l == nullptr)
v->l = new Node();
if (v->r == nullptr)
v->r = new Node();
}
void push(Node *v, int l, int r) {
if (v->add == 0) return;
v->val += v->add * (long long) (r - l + 1);
if (l != r) {
createSon(v);
v->l->add += v->add, v->r->add += v->add;
}
v->add = 0;
}
void update(Node *v, int l, int r, int tl, int tr, long long add) {
push(v, l, r);
if (l > tr || r < tl)
return;
if (l >= tl && r <= tr) {
v->add += add;
push(v, l, r);
return;
}
int mid = (l + r) / 2;
createSon(v);
update(v->l, l, mid, tl, tr, add);
update(v->r, mid + 1, r, tl, tr, add);
v->val = v->l->val + v->r->val;
}
long long get_sum(Node *v, int l, int r, int tl, int tr) {
if (l > tr || r < tl || v == nullptr)
return 0;
push(v, l, r);
if (l >= tl && r <= tr)
return v->val;
int mid = (l + r) / 2;
return get_sum(v->l, l, mid, tl, tr)
+ get_sum(v->r, mid + 1, r, tl, tr);
}
void Add(Node *v, int x) {
update(v, 0, maxC, 1, x, -1);
update(v, 0, maxC, 0, 0, x);
update(v, 0, maxC, x + 1, maxC, 1);
}
void Del(Node *v, int x) {
update(v, 0, maxC, 1, x - 1, 1);
update(v, 0, maxC, 0, 0, -x);
update(v, 0, maxC, x + 1, maxC, -1);
}
long long get(Node *v, int x) {
return get_sum(v, 0, maxC, 0, x);
}
Node *r1 = new Node(), *r2 = new Node();
long long find_ans(Node *v) {
int l = 0, r = maxC;
while (r - l > 1) {
int mid = (l + r) / 2;
if (get(v, mid) <= get(v, mid - 1)) l = mid;
else r = mid;
}
return get(v, l);
}
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr), cout.tie(nullptr);
int k, n;
long long add = 0;
cin >> k >> n;
vector<int> s, t;
for (int i = 0; i < n; i++) {
char p, q;
int S, T;
cin >> p >> S >> q >> T;
if (S < T) swap(S, T);
if (p == q) {
add += S - T;
} else {
s.emplace_back(S), t.emplace_back(T);
}
}
n = (int) s.size();
if (n == 0) {
cout << add;
return 0;
}
if (k == 1) {
for (int i = 0; i < n; i++)
Add(r1, s[i]), Add(r1, t[i]);
cout << find_ans(r1) + add + n;
return 0;
}
return 0;
}
详细
Subtask #1:
score: 8
Accepted
Test #1:
score: 8
Accepted
time: 1ms
memory: 3780kb
input:
1 1 B 426311872 B 741424667
output:
315112795
result:
ok single line: '315112795'
Test #2:
score: 8
Accepted
time: 3ms
memory: 3884kb
input:
1 1000 A 1000000000 B 1000000000 B 1000000000 A 1000000000 A 500000000 B 500000000 A 1000000000 B 1000000000 B 0 A 0 A 500000000 B 500000000 B 0 A 0 A 1000000000 B 1000000000 A 500000000 B 500000000 A 1000000000 B 1000000000 B 1000000000 A 1000000000 A 0 B 0 B 0 A 0 B 0 A 0 A 500000000 B 500000000 B...
output:
659000001000
result:
ok single line: '659000001000'
Test #3:
score: 8
Accepted
time: 4ms
memory: 3932kb
input:
1 1000 A 500000001 B 500000000 A 500000002 B 500000003 A 500000005 B 500000004 A 1 B 0 B 500000007 A 500000006 A 500000009 B 500000008 B 500000010 A 500000011 B 1000000000 A 999999999 A 3 B 2 B 499999988 A 499999989 A 999999998 B 999999997 B 4 A 5 B 7 A 6 A 9 B 8 A 10 B 11 B 999999996 A 999999995 A ...
output:
649999819818
result:
ok single line: '649999819818'
Test #4:
score: 8
Accepted
time: 0ms
memory: 3548kb
input:
1 4 B 90 B 72 A 68 A 90 A 15 A 42 A 45 A 15
output:
97
result:
ok single line: '97'
Test #5:
score: 8
Accepted
time: 0ms
memory: 3704kb
input:
1 1000 A 0 B 1 A 1 B 0 A 0 B 1 B 0 A 0 B 1 B 1 B 0 A 0 A 1 B 1 A 1 B 1 A 1 B 0 A 0 B 1 A 0 B 0 B 1 A 1 B 0 A 0 B 0 A 0 A 1 B 0 A 1 B 0 B 1 A 0 B 0 A 0 A 1 B 1 A 1 B 1 B 0 A 1 B 0 A 1 A 0 B 1 B 0 A 1 A 1 B 0 A 1 B 1 B 1 A 0 B 1 A 0 B 1 A 0 A 1 B 0 A 0 B 1 A 0 B 1 A 0 B 0 B 0 A 0 A 1 B 1 B 0 A 1 B 0 A...
output:
1969
result:
ok single line: '1969'
Test #6:
score: 8
Accepted
time: 3ms
memory: 6428kb
input:
1 1000 A 598246 B 85766 B 457924 A 841963 B 107690 A 39924 B 814042 A 328853 B 518897 A 548739 B 633776 A 181927 A 985484 B 773931 A 698975 B 526021 A 846547 B 258759 B 778661 A 181322 B 131489 A 151052 A 669218 B 314136 B 562707 A 887236 B 47953 A 880429 A 251615 B 488724 B 734021 A 487209 B 492935...
output:
497401257
result:
ok single line: '497401257'
Test #7:
score: 8
Accepted
time: 5ms
memory: 10176kb
input:
1 967 B 209071192 A 810324333 A 603292190 B 990286906 B 76624835 A 1764783 B 38843365 A 66481975 B 506328820 A 854781128 B 601820095 A 20961640 B 953337305 A 762377474 B 472547211 A 248665021 A 908090176 B 277738137 B 523090586 A 193277212 B 824206700 A 342446509 B 845969410 A 191939894 A 472429676 ...
output:
470796680092
result:
ok single line: '470796680092'
Test #8:
score: 8
Accepted
time: 3ms
memory: 3552kb
input:
1 1000 B 0 A 1000000000 B 0 A 1000000000 B 1000000000 A 0 A 1000000000 B 0 B 0 A 1000000000 B 0 A 1000000000 A 0 B 1000000000 B 0 A 1000000000 B 0 A 1000000000 B 0 A 1000000000 B 0 A 1000000000 A 1000000000 B 0 B 0 A 1000000000 B 0 A 1000000000 A 1000000000 B 0 B 1000000000 A 0 B 1000000000 A 0 B 0 ...
output:
1000000001000
result:
ok single line: '1000000001000'
Test #9:
score: 8
Accepted
time: 8ms
memory: 10368kb
input:
1 1000 A 126148 B 138629 A 1956796 B 1961512 A 2467612 B 2976963 B 3231056 A 3187470 B 4485092 A 4805418 A 5815768 B 5012466 B 6709826 A 6631652 A 7384525 B 7982443 A 8702501 B 8083053 A 9750494 B 9414146 B 10511913 A 10300242 A 11414967 B 11792128 B 12453829 A 12271791 A 13801488 B 13139841 B 14570...
output:
499992449655
result:
ok single line: '499992449655'
Test #10:
score: 8
Accepted
time: 4ms
memory: 3824kb
input:
1 1000 B 1000000000 A 0 B 1 A 999999999 A 999999998 B 2 A 999999997 B 3 A 999999996 B 4 B 5 A 999999995 B 6 A 999999994 A 7 B 999999993 B 999999992 A 8 A 9 B 999999991 A 999999990 B 10 A 11 B 999999989 B 12 A 999999988 A 13 B 999999987 B 14 A 999999986 A 999999985 B 15 B 999999984 A 16 B 17 A 999999...
output:
999999002000
result:
ok single line: '999999002000'
Test #11:
score: 8
Accepted
time: 3ms
memory: 7464kb
input:
1 1000 A 639022834 B 639022825 B 164875881 A 164875889 A 345973409 B 345973410 B 650643813 A 650643816 A 218804569 B 218804573 B 60886574 A 60886583 B 829040885 A 829040890 B 340211580 A 340211573 B 783059185 A 783059177 B 994262398 A 994262399 B 427304481 A 427304486 A 373191501 B 373191501 A 65190...
output:
498415265474
result:
ok single line: '498415265474'
Subtask #2:
score: 0
Memory Limit Exceeded
Dependency #1:
100%
Accepted
Test #12:
score: 14
Accepted
time: 245ms
memory: 4356kb
input:
1 100000 B 0 A 0 A 1 B 0 B 0 A 0 A 1 B 0 B 1 A 0 B 1 A 1 B 1 A 0 A 0 B 0 B 1 A 0 B 1 A 0 B 1 A 0 B 0 A 1 B 0 A 0 B 0 A 1 A 0 B 1 B 1 A 0 A 1 B 1 B 0 A 0 A 0 B 0 A 1 B 1 B 1 A 0 B 0 A 1 A 0 B 0 A 0 B 1 B 1 A 0 A 0 B 1 A 0 B 0 A 1 B 0 A 1 B 1 A 1 B 0 B 1 A 0 A 1 B 0 A 0 B 0 B 0 A 1 B 1 A 0 A 0 B 1 A 0...
output:
199907
result:
ok single line: '199907'
Test #13:
score: 14
Accepted
time: 340ms
memory: 27172kb
input:
1 100000 A 999999999 B 1000000000 A 1 B 0 B 3 A 2 A 4 B 5 A 999999998 B 999999997 A 500000000 B 500000001 B 999999995 A 999999996 B 999999993 A 999999994 A 500000002 B 500000003 A 500000005 B 500000004 B 500000007 A 500000006 A 999999991 B 999999992 A 7 B 6 A 999999989 B 999999990 B 499999993 A 4999...
output:
66818736664678
result:
ok single line: '66818736664678'
Test #14:
score: 0
Memory Limit Exceeded
input:
1 100000 A 999933197 B 922319427 B 358973258 A 110896122 B 790706905 A 700578466 A 261833979 B 174780238 B 527377624 A 790157498 A 712098182 B 434767355 B 649365576 A 222614576 B 524821299 A 224370351 B 634735585 A 55865839 A 423764322 B 340889518 A 366912717 B 836451240 A 284261689 B 409476293 B 55...
output:
50064192028779
result:
Subtask #3:
score: 0
Wrong Answer
Test #22:
score: 9
Accepted
time: 0ms
memory: 3548kb
input:
2 1 B 822190955 B 309099167
output:
513091788
result:
ok single line: '513091788'
Test #23:
score: 0
Wrong Answer
time: 0ms
memory: 3552kb
input:
2 100 A 699479271 B 699479270 B 999432953 A 999432956 A 657124443 B 657124444 B 928721383 A 928721383 B 809218485 A 809218487 B 220719335 A 220719338 B 93242937 A 93242943 A 566737518 B 566737523 A 751211620 B 751211614 B 799605314 A 799605321 A 634052514 B 634052513 B 681923789 A 681923799 B 377862...
output:
result:
wrong answer 1st lines differ - expected: '22963819679', found: ''
Subtask #4:
score: 0
Skipped
Dependency #3:
0%
Subtask #5:
score: 0
Skipped
Dependency #4:
0%