Submission #1099750

#TimeUsernameProblemLanguageResultExecution timeMemory
1099750model_codeTreasure (IOI24_treasure)C++17
81 / 100
352 ms8652 KiB
// partially_correct/mb_80.cpp #include <bits/stdc++.h> #include "treasure.h" using namespace std; const int N=2e5+5; int vis[N]; vector<int> encode(vector<pair<int,int>> points) { vector<vector<int> > a(points.size(),vector<int>(2)); for(int i=0;i<(int)points.size();i++) a[i][0]=points[i].first,a[i][1]=points[i].second; for(int i=0;i<(int)a.size()*2;i++) vis[i]=0; vector<int> nums; int CON=(1<<30)-2; for(int i=0;i<(int)a.size();i++) { for(int j=0;j<2;j++) { nums.push_back(a[i][j]&CON); } } sort(nums.begin(),nums.end()); vector<int> res=nums; for(int i=0;i<(int)a.size();i++) { int x=lower_bound(nums.begin(),nums.end(),a[i][0]&CON)-nums.begin(); int y=lower_bound(nums.begin(),nums.end(),a[i][1]&CON)-nums.begin(); while(vis[x]) x++; while(vis[y]) y++; vis[x]=1; vis[y]=1; int b=(a[i][0]&1)<<1; b|=(a[i][1]&1); // (x) 0 (y|2) b 1 int p1=y>>9,p2=(y&((1<<9)-1)); int v1=(x<<11)|(0<<10)|(p1<<1)|(a[i][0]&1); int v2=(x<<11)|(1<<10)|(p2<<1)|(a[i][1]&1); v1=(v1<<1)|1; v2=(v2<<1)|1; res.push_back(v1); res.push_back(v2); } return res; } vector<pair<int,int>> decode(vector<int> em) { vector<int> nums,inf; for(int i=0;i<(int)em.size();i++) { if((em[i]&1)) inf.push_back(em[i]>>1); else nums.push_back(em[i]); } sort(nums.begin(),nums.end()); sort(inf.begin(),inf.end()); assert(inf.size()%2==0); vector<pair<int,int>> res; for(int i=0;i<(int)inf.size();i+=2) { int x=(inf[i]>>11); int y=(inf[i]>>1)&((1<<9)-1); y<<=9; y|=(inf[i+1]>>1)&((1<<9)-1); int vx=nums[x],vy=nums[y]; vx|=(inf[i]&1); vy|=(inf[i+1]&1); res.push_back({vx, vy}); } return res; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...