#include "treasure.h"
#include<bits/stdc++.h>
using namespace std;
#define F first
#define S second
#define pll pair<ll, ll>
#define vll vector<ll>
#define pb push_back
typedef long long ll;
const ll mxN=4e4;
const ll mxM=1e9+2;
vector<int> encode(vector<pair<int, int>> P) {
ll n=P.size();
vector<int> re;
vector<pll> con1, con2;
for(ll i=0;i<n;i++){
con1.pb({P[i].F, i});
con2.pb({P[i].S, i});
}
// sort(P.begin(), P.end());
sort(con1.begin(), con1.end());
sort(con2.begin(), con2.end());
// con1.erase(unique(con1.begin(), con1.end()), con1.end());
// con2.erase(unique(con2.begin(), con2.end()), con2.end());
// auto id1=[&](ll tar){
// return lower_bound(con1.begin(), con1.end(), tar)-con1.begin();
// };
// auto id2=[&](ll tar){
// return lower_bound(con2.begin(), con2.end(), tar)-con2.begin();
// };
for(auto &it:con1){
re.pb((int) it.F*2);
}
for(auto &it:con2){
re.pb((int) it.F*2+1);
}
vector<pll> cor(n);
for(ll i=0;i<n;i++){
cor[con1[i].S].F=i;
}
for(ll i=0;i<n;i++){
cor[con2[i].S].S=i;
}
vll perm(n);
for(ll i=0;i<n;i++){
ll idx=con1[i].S;
perm[i]=cor[idx].S;
}
ll pt=mxM;
ll siz=n;
vector<bool> done(n);
auto id=[&](ll tar){
ll cnt=0;
for(ll i=0;i<tar;i++){
if(!done[i]) cnt++;
}
return cnt;
};
for(ll i=0;i<n;i++){
re.pb(pt+id(perm[i]));
done[perm[i]]=1;
pt+=siz;
siz--;
}
// for(auto &it:re){
// cout<<it<<' ';
// }
// cout<<'\n';
return re;
}
vector<pair<int, int>> decode(vector<int> S) {
vll con1, con2, con3;
for(auto &it:S){
if(it<mxM){
if(it%2==0){
con1.pb(it/2);
}
else{
con2.pb(it/2);
}
}
else{
con3.pb(it);
}
}
sort(con1.begin(), con1.end());
sort(con2.begin(), con2.end());
sort(con3.begin(), con3.end());
ll n=con3.size();
vector<pair<int, int>> re;
ll pt=mxM;
ll siz=n;
vector<bool> done(n);
auto f=[&](ll idx){
ll cnt=0;
for(ll i=0;i<n;i++){
if(cnt>=idx && !done[i]) return i;
if(!done[i]) cnt++;
}
return -1LL;
};
for(ll i=0;i<n;i++){
ll cur=con3[i];
cur-=pt;
ll tep=f(cur);
done[tep]=1;
re.pb({(int) con1[i], (int) con2[tep]});
pt+=siz;
siz--;
}
return re;
// return {0, 0};
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |