QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#400994 | #6671. Zadatak | nvujica | 0 | 388ms | 353496kb | C++14 | 2.6kb | 2024-04-27 20:28:48 | 2024-04-27 20:28:48 |
Judging History
answer
#include <bits/stdc++.h>
#define ll long long
#define fi first
#define se second
using namespace std;
const int maxn = 2e5 + 10, off = 1 << 17, maxcnt = 2e7;
int n, cnt;
set <int> s[maxn];
ll tour[maxcnt];
int prop[maxcnt];
int l[maxcnt];
int r[maxcnt];
int root[maxn];
vector <int> v;
ll pravi[maxn];
int arr[maxn];
vector <int> saz;
void push(int x, int lo, int hi){
if(hi - lo == 1 || prop[x] == 0) return;
int mid = (lo + hi) / 2;
prop[x] = 0;
tour[l[x]] = pravi[mid] - pravi[lo] - tour[l[x]];
tour[r[x]] = pravi[hi] - pravi[mid] - tour[r[x]];
prop[l[x]] ^= 1;
prop[r[x]] ^= 1;
}
void update(int x, int lo, int hi, int rig){
// cout << x << ' ' << lo << ' ' << hi << ' ' << rig << ' ' << tour[x] << endl;
if(l[x] == 0){
cnt++;
l[x] = cnt;
cnt++;
r[x] = cnt;
}
push(x, lo, hi);
if(lo >= rig) return;
if(hi <= rig){
tour[x] = pravi[hi] - pravi[lo] - tour[x];
prop[x] ^= 1;
return;
}
int mid = (lo + hi) / 2;
update(l[x], lo, mid, rig);
update(r[x], mid, hi, rig);
tour[x] = tour[l[x]] + tour[r[x]];
}
ll query(int x, int lo, int hi, int lef, int rig){
if(l[x] == 0){
cnt++;
l[x] = cnt;
cnt++;
r[x] = cnt;
}
push(x, lo, hi);
if(hi <= lef || lo >= rig) return 0;
if(lef <= lo && hi <= rig) return tour[x];
int mid = (lo + hi) / 2;
return query(l[x], lo, mid, lef, rig) + query(r[x], mid, hi, lef, rig);
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n;
for(int i = 1; i <= n; i++){
cin >> arr[i];
arr[i] /= 2;
saz.push_back(arr[i]);
}
saz.push_back(0);
sort(saz.begin(), saz.end());
saz.erase(unique(saz.begin(), saz.end()), saz.end());
for(int i = 1; i <= n; i++){
int poz = lower_bound(saz.begin(), saz.end(), arr[i]) - saz.begin();
pravi[poz] = (ll)arr[i]*arr[i];
arr[i] = poz;
cnt++;
root[i] = cnt;
s[i].insert(arr[i]);
update(root[i], 0, off, arr[i]);
}
for(int i = 1; i <= n - 1; i++){
int a, b;
cin >> a >> b;
if(s[b].size() > s[a].size()) swap(a, b);
v.clear();
v.push_back(0);
auto it = s[b].begin();
while(it != s[b].end()){
v.push_back(*it);
it++;
}
s[b].clear();
ll ans = 0;
for(int j = v.size() - 1; j >= 1; j -= 2){
ans += query(root[a], 0, off, v[j - 1], v[j]);
}
for(int j = 0; j < v.size(); j++){
if(s[a].find(v[j]) == s[a].end()) s[a].insert(v[j]);
else s[a].erase(v[j]);
update(root[a], 0, off, v[j]);
}
root[n + i] = root[a];
swap(s[n + i], s[a]);
cout << ans * 4 << "\n";
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 0
Wrong Answer
time: 13ms
memory: 28900kb
input:
5000 217378 945562 533764 323494 69148 240722 205370 463122 552700 31800 616898 678076 893816 258468 34822 905360 967562 731346 340940 584418 684926 785402 107584 995542 363278 255302 196912 870994 329464 338390 154870 977540 65120 130388 350020 239660 553428 710306 385138 633274 841672 740778 17929...
output:
359872811236 632705703184 113223620400 251229507984 1338757520016 0 142492660324 492745033764 383562216976 89244392644 551725099524 278399748496 311560446976 233709556800 1159383957604 0 172741415748 92640103936 28418613120 60443205904 42771203344 341931572900 73529592508 193225675856 248612109488 3...
result:
wrong answer 5th lines differ - expected: '470237900880', found: '1338757520016'
Subtask #2:
score: 0
Wrong Answer
Test #27:
score: 0
Wrong Answer
time: 175ms
memory: 161712kb
input:
100000 590812 862538 815196 397712 773198 172122 270600 609324 841858 4868 597128 216378 982576 385590 842010 55844 671758 885088 577804 194248 229770 859754 274744 678176 607974 791062 607192 210234 863164 619708 804538 430978 237704 10512 840374 843732 875326 255462 970338 898540 925508 661464 413...
output:
349058819344 315485699072 25981509888 617774289056 29625982884 43598377116 -157903604140 799919125092 23697424 -172641190156 17217153424 658258339660 92672441524 49048226836 23697424 596038451604 -38405355592 271426226484 26531127972 17175971548 662419105796 19435877084 46405026940 403210431324 4673...
result:
wrong answer 3rd lines differ - expected: '158174834944', found: '25981509888'
Subtask #3:
score: 0
Wrong Answer
Test #40:
score: 0
Wrong Answer
time: 388ms
memory: 353496kb
input:
65536 131908 883754 813278 197778 704074 981802 297078 903698 485360 496064 726120 251990 462786 129558 704500 920556 903884 454552 949354 328526 921462 975888 780002 276668 675308 49774 83014 136308 679916 42174 151084 358830 284218 259680 65684 526980 516764 200170 265060 294150 128046 658864 2984...
output:
17399720464 39116137284 495720197476 88255338084 235574329600 63498960100 16785275364 496320250000 206617520704 107929332676 849092217444 76545182224 2477451076 6891324196 1778646276 22826375056 67433702400 4314387856 40068028900 70256803600 16395778116 89086728676 242284466176 8531108496 4721146752...
result:
wrong answer 26th lines differ - expected: '319159463364', found: '34867887264'
Subtask #4:
score: 0
Skipped
Dependency #1:
0%
Subtask #5:
score: 0
Skipped
Dependency #1:
0%