제출 #1218926

#제출 시각아이디문제언어결과실행 시간메모리
1218926ThylOneTreasure (IOI24_treasure)C++20
0 / 100
83 ms6224 KiB
#include "treasure.h" #include<bits/stdc++.h> using namespace std; std::vector<int> encode(std::vector<std::pair<int, int>> P) { vector<pair<int,int>> vecX, vecY; for(int i = 0 ; i < P.size() ; i++){ vecX.push_back(make_pair(P[i].first, i)); vecY.push_back(make_pair(P[i].second, i)); } sort(vecX.begin(), vecX.end()); sort(vecY.begin(), vecY.end()); int finalY[vecX.size()]; for(int i = 0 ; i < (int)vecX.size() ; i++){ finalY[vecY[i].second] = i; } vector<int> X_ret, Y_ret, P_ret; for(int i = 0; i< (int)vecX.size() ; i++){ X_ret.push_back(3*P[i].first+1); Y_ret.push_back(3*P[i].second+2); P_ret.push_back(3*(i+1e4*finalY[vecX[i].second])); assert(P_ret.back()<=2e9); } vector<int> re; re.insert(re.end(),X_ret.begin(), X_ret.end()); re.insert(re.end(),Y_ret.begin(), Y_ret.end()); re.insert(re.end(),P_ret.begin(), P_ret.end()); return re; } std::vector<std::pair<int, int>> decode(std::vector<int> S) { vector<int> vecX, vecY, vecP; for(int i = 0 ; i < (int)S.size() ; i++){ if(S[i]%3 == 0){ vecP.push_back(S[i]/3); }else if(S[i]%3 == 1){ vecX.push_back(S[i]/3); }else{ vecY.push_back(S[i]/3); } } sort(vecX.begin(), vecX.end()); sort(vecY.begin(), vecY.end()); vector<pair<int,int>> pos_nxtY; for(int i = 0 ; i < (int)vecP.size() ; i++){ pos_nxtY.push_back(make_pair(vecP[i]%10000 , vecP[i]/10000)); } sort(pos_nxtY.begin(), pos_nxtY.end()); vector<pair<int,int>> ans; for(int i = 0 ; i < (int)pos_nxtY.size() ; i++){ assert(pos_nxtY[i].first == i); ans.push_back({vecX[i], vecY[pos_nxtY[i].second]}); } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...