Submission #884445

#TimeUsernameProblemLanguageResultExecution timeMemory
884445lalig777Turnir (COCI17_turnir)C++14
100 / 100
381 ms14784 KiB
#include <iostream> #include <vector> #include <algorithm> #include <queue> using namespace std; int main(){ int n; cin>>n; int ntotal=1; for (int i=0; i<n; i++) ntotal*=2; vector<pair<int,int> >nums(ntotal); vector<int>nivel(ntotal); for (int i=0; i<ntotal; i++){ cin>>nums[i].first; nums[i].second=i; }sort(nums.begin(), nums.end()); int xact=1, xant=0; for (int i=0; i<=n; i++){ for (int j=xant; j<min(xact, ntotal); j++) nivel[nums[j].second]=i; xant=xact; xact=(xact+1)*2-1; }for (int i=ntotal-2; i>=0; i--){ if (nums[i].first==nums[i+1].first) nivel[nums[i].second]=nivel[nums[i+1].second]; }for (int i=0; i<ntotal; i++) cout<<n-nivel[i]<<" "; cout<<endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...