#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(4*P[i].first);
    Y_ret.push_back(4*P[i].second+2);
    P_ret.push_back(2*(i+1e4*finalY[i])+1);
  }
  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]%2 == 1){
      vecP.push_back(S[i]/2);
    }else if(S[i]%4 == 0){
      vecX.push_back(S[i]/4);
    }else{
      vecY.push_back(S[i]/4);
    }
  }
  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++){
    ans.push_back({vecX[i], vecY[pos_nxtY[i].second]});
  }
  return ans;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |