Submission #1289164

#TimeUsernameProblemLanguageResultExecution timeMemory
1289164eri16Group Photo (JOI21_ho_t3)C++20
12 / 100
529 ms720 KiB
#include <bits/stdc++.h> using namespace std; int countInversions(vector<int>& arr) { int inv_count=0; int n=arr.size(); for (int i=0; i<n; i++){for (int j=i+1; j<n; j++) {if (arr[i]>arr[j]){inv_count++;}}}return inv_count;} int solve_perm(vector <int> v){ vector <pair<int,int>> tm; for (int i=0; i<v.size(); i++){tm.push_back({v[i],i});} int mn=INT_MAX; sort(tm.begin(),tm.end()); do { int ans=1; for (int i=1; i<tm.size(); i++){if (tm[i].first+2<=tm[i-1].first){ans=0;}} if (ans==1){ vector<int> permutation; for (auto& p : tm){ permutation.push_back(p.second);} int swaps = countInversions(permutation); mn = min(mn, swaps); } } while (next_permutation(tm.begin(), tm.end())); return mn; } int solve_binary(vector <int> v){ int n=v.size(); int total=1<<(n); vector <int> pos(n+1); for (int i=0; i<n; i++){pos[v[i]]=i;} int mn=INT_MAX; for (int mask=0; mask<total; mask++){ vector<int> groups; for (int i=0; i<n; i++){ if (mask&(1<<i)){ groups.push_back(i+1); } } vector <pair<int,int>> tm; if (groups.size()!=0){ int j=0; int lst=0; int lt=0; for (int i=0; i<n; i++){ if (lst-1<i){ if (j!=groups.size()){ tm.push_back({groups[j],pos[groups[j]]}); lst=groups[j]; lt=lst; j++;} else{break;} } else{ lt--; tm.push_back({lt,pos[lt]}); } } vector<int> permutation; if (tm.size()==n){ for (auto& p : tm){permutation.push_back(p.second);} int swaps=countInversions(permutation); mn=min(mn,swaps);} /*for (int i=0; i<tm.size(); i++){cout<<tm[i].first<<' ';} cout<<"\n"; */ groups.clear(); }} return mn; } int main(){ int n; cin>>n; vector <int> v(n); for (int i=0; i<n; i++){ cin>>v[i]; } //cout<<solve_perm(v)<<"\n"; cout<<solve_binary(v); }
#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...