Submission #1143646

#TimeUsernameProblemLanguageResultExecution timeMemory
1143646owoovoMonster Game (JOI21_monster)C++20
0 / 100
20 ms420 KiB
#include "monster.h" //#include "grader.cpp" #include<bits/stdc++.h> #define ll long long #define F first #define S second using namespace std; vector<int> Solve(int N) { int n=N; vector<int> id(n); for(int i=0;i<n;i++)id[i]=i; auto mg=[&](auto MG,int l,int r){ if(l==r)return; int m=(l+r)>>1; MG(MG,l,m); MG(MG,m+1,r); vector<int> nw; int lp=l,rp=m+1; while(lp!=m+1&&rp!=r+1){ if(Query(id[lp],id[rp])){ nw.push_back(id[rp]); rp++; }else{ nw.push_back(id[lp]); lp++; } } while(lp!=m+1){ nw.push_back(id[lp]); lp++; } while(rp!=r+1){ nw.push_back(id[rp]); rp++; } for(int i=l;i<=r;i++){ id[i]=nw[i-l]; } return; }; mg(mg,0,n-1); auto f4=[&](auto F4){ pair<int,int> win[4]={}; for(int i=0;i<4;i++){ win[i].S=id[i]; for(int j=i+1;j<4;j++){ if(Query(id[i],id[j])){ win[i].F++; }else{ win[j].F++; } } } sort(&win[0],&win[4]); if(win[3].F==3){ } if(Query(win[1].S,win[0].S))swap(win[0],win[1]); if(Query(win[3].S,win[2].S))swap(win[3],win[2]); for(int i=0;i<4;i++){ id[i]=win[i].S; } }; f4(f4); vector<int> ans(n); for(int i=0;i<n;i++){ ans[id[i]]=i; } // for(auto x:id){ // cout<<x<<" "; // } // cout<<"\n"; // for(auto x:ans){ // cout<<x<<" "; // } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...