# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
334363 | 2020-12-09T05:01:28 Z | CodeTiger927 | ČVENK (COI15_cvenk) | C++14 | 247 ms | 92140 KB |
using namespace std; #include <iostream> #include <algorithm> #define MAXN 100005 struct node { node* c[2]; int x,y,s,xy; node(int _x,int _y): x(_x),y(_y),xy(_x + _y),s(0) { c[0] = c[1] = nullptr; } node* insert(node* next,bool lr) { s++; if(!c[lr]) c[lr] = next; if(next -> x < c[lr] -> x || next -> y < c[lr] -> y) { next -> c[lr] = c[lr]; next -> s += c[lr] -> s; c[lr] = next; return next; } if(next -> x > c[lr] -> x || next -> y > c[lr] -> y) { return c[lr] -> insert(next,lr); } return c[lr]; } }; node* root = new node(0,0); long long sum,ans; int N; pair<int,int> pts[MAXN]; void dfs(node* cur,long long curN) { ans = min(ans,curN); if(cur -> c[0]) dfs(cur -> c[0],curN + (1ll * N - 2 * cur -> c[0] -> s) * (cur -> c[0] -> xy - cur -> xy)); if(cur -> c[1]) dfs(cur -> c[1],curN + (1ll * N - 2 * cur -> c[1] -> s) * (cur -> c[1] -> xy - cur -> xy)); } int main() { cin >> N; for(int i = 0;i < N;++i) { cin >> pts[i].first >> pts[i].second; sum += pts[i].first + pts[i].second; } sort(pts,pts + N,[&](pair<int,int> p1,pair<int,int> p2) {return (p1.first + p1.second) > (p2.first + p2.second);}); for(int i = 0;i < N;++i) { int curX,curY; curX = curY = 0; node* cur = root; for(int j = 29;j >= 0;--j) { if(pts[i].first & (1 << j)) { curX += (1 << j); cur = cur -> insert(new node(curX,curY),0); }else if(pts[i].second & (1 << j)) { curY += (1 << j); cur = cur -> insert(new node(curX,curY),1); } } } ans = sum; dfs(root,sum); cout << ans << endl; return 0; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 364 KB | Output is correct |
2 | Correct | 0 ms | 364 KB | Output is correct |
3 | Correct | 1 ms | 364 KB | Output is correct |
4 | Correct | 1 ms | 364 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 364 KB | Output is correct |
2 | Incorrect | 1 ms | 364 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 80 ms | 26092 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 242 ms | 92140 KB | Output is correct |
2 | Correct | 247 ms | 92012 KB | Output is correct |
3 | Incorrect | 187 ms | 84996 KB | Output isn't correct |
4 | Halted | 0 ms | 0 KB | - |