Submission #1218908

#TimeUsernameProblemLanguageResultExecution timeMemory
1218908ThylOneTreasure (IOI24_treasure)C++20
0 / 100
90 ms6584 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(4*P[i].first);
    Y_ret.push_back(4*P[i].second+2);
    P_ret.push_back(2*(i+1e4*finalY[vecX[i].second])+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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...