Submission #1226128

#TimeUsernameProblemLanguageResultExecution timeMemory
1226128bynixTreasure (IOI24_treasure)C++20
100 / 100
367 ms10932 KiB
#include "bits/stdc++.h" #include "treasure.h" using namespace std; vector<int> encode(vector<pair<int, int>> P) { vector<int> ans, y; for (auto &e: P) y.push_back(e.second); sort(y.begin(), y.end()); sort(P.begin(), P.end()); map<int, int> ymap; int c = 0; for (auto &e: y){if (!ymap.count(e)) ymap[e] = c, c++;} int cs = 0; for (auto &e: P) { cs += ymap[e.second]; ans.push_back(cs); ans.push_back(e.first + 1e9 - 1); ans.push_back(e.second + 1e9 + 5e8); } return ans; } vector<pair<int, int>> decode(vector<int> S) { vector<int> x, y, pref; for (auto &e: S){ if (e >= 1e9 + 5e8) y.push_back(e - 1e9 - 5e8); else if (e >= 1e9 - 1) x.push_back(e - 1e9 + 1); else pref.push_back(e); } sort(x.begin(), x.end()); sort(y.begin(), y.end()); int c = 0; map<int, int> ymap, ym; for (auto &e: y){ if (!ymap.count(e)) ymap[e] = c, c++; ym[c] = e; } vector<pair<int, int>> ans; int n = x.size(); for (auto &e: x) ans.push_back({e, 0}); sort(pref.begin(), pref.end()); ans[0].second = ym[pref[0] + 1]; for (int i = 1; i < n; i++) ans[i].second = ym[pref[i] - pref[i - 1] + 1]; return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...