Submission #1307923

#TimeUsernameProblemLanguageResultExecution timeMemory
1307923yusifmCheerleaders (info1cup20_cheerleaders)C++20
13 / 100
2103 ms157704 KiB
#pragma GCC optimize("O3") #include <bits/stdc++.h> #include <bits/extc++.h> #define ll long long #define str string #define pb push_back #define pf push_front #define in insert #define all(v) v.begin(),v.end() const int sz=1000000,INF=1000000; using namespace std; using namespace __gnu_pbds; ll n,num,cnt,minRes=INF; vector<ll>res,res1,res2,Nums; map<vector<ll>,ll>dist; ll f(vector<ll>nums) { ll res=0; tree<ll,null_type,less<ll>,rb_tree_tag,tree_order_statistics_node_update>numS; for(int i=nums.size()-1;i>=0;i--) { res+=numS.order_of_key(nums[i]),numS.in(nums[i]); } return res; } vector<ll>f1(vector<ll>nums) { vector<ll>nums1,nums2,res; for(int i=0;i<nums.size()/2;i++) { nums1.pb(nums[i]); } for(int i=nums.size()/2;i<nums.size();i++) { nums2.pb(nums[i]); } for(int i=0;i<nums2.size();i++) { res.pb(nums2[i]); } for(int i=0;i<nums1.size();i++) { res.pb(nums1[i]); } return res; } vector<ll>f2(vector<ll>nums) { vector<ll>nums1,nums2,res; for(int i=0;i<nums.size();i++) { if(i%2==0) { nums1.pb(nums[i]); } else { nums2.pb(nums[i]); } } for(int i=0;i<nums1.size();i++) { res.pb(nums1[i]); } for(int i=0;i<nums2.size();i++) { res.pb(nums2[i]); } return res; } void bfs(vector<ll>nums) { queue<vector<ll>>numS; numS.push(nums); dist[nums]=0,minRes=f(nums),Nums=nums,cnt=0; while(numS.size()!=0 && cnt<INF) { res=numS.front(),cnt++; numS.pop(); if(f(res)<minRes) { minRes=f(res),Nums=res; } res1=f1(res); if(dist.find(res1)==dist.end()) { numS.push(res1),dist[res1]=dist[res]+1; } res2=f2(res); if(dist.find(res2)==dist.end()) { numS.push(res2),dist[res2]=dist[res]+1; } } } void solve() { cin>>n; vector<ll>nums; for(int i=0;i<pow(2,n);i++) { cin>>num; nums.pb(num); } bfs(nums); cout<<f(Nums); } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr),cout.tie(nullptr); ll t=1; //cin>>t; while(t--) { solve(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...