제출 #1166190

#제출 시각아이디문제언어결과실행 시간메모리
1166190sqrteipiTreasure (IOI24_treasure)C++20
100 / 100
207 ms5420 KiB
#include <bits/stdc++.h>
#include "treasure.h"
using namespace std;

vector<int> encode(vector<pair<int, int>> P) {
  int n = P.size(), pre = 0;
  vector<int> ans;
  vector<pair<int, int>> P2;
  sort(P.begin(), P.end());
  for (int i = 0; i < n; i++) {
    auto [x, y] = P[i];
    ans.push_back(x);
    ans.push_back(5e8 + 1 + y);
    P2.push_back({y, i + 1});
  }
  sort(P2.begin(), P2.end());
  for (int i = 0; i < n; i++) {
    auto [y, idx] = P2[i];
    pre += idx;
    ans.push_back(1e9 + 2 + pre);
  }
  return ans;
}

vector<pair<int, int>> decode(vector<int> S) {
  int n = S.size() / 3;
  vector<int> xx, yy, idxx;
  vector<pair<int, int>> ans;
  for (auto var : S) {
    if (var <= 5e8) xx.push_back(var);
    else if (var <= 1e9 + 1) yy.push_back(var - 5e8 - 1);
    else idxx.push_back(var - 1e9 - 2);
  }
  sort(xx.begin(), xx.end());
  sort(yy.begin(), yy.end());
  sort(idxx.begin(), idxx.end());
  for (int i = 0; i < n; i++) {
    int y = yy[i];
    int idx = idxx[i] - (i == 0 ? 0 : idxx[i - 1]);
    int x = xx[idx - 1];
    ans.push_back({x, y});
  }
  return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...