Submission #1226861

#TimeUsernameProblemLanguageResultExecution timeMemory
1226861AvianshChorus (JOI23_chorus)C++20
16 / 100
49 ms328 KiB
#include <bits/stdc++.h> using namespace std; int check(int mask, int n){ //0 is a, 1 is b vector<int>as; vector<int>bs; for(int i = 0;i<n;i++){ if((1<<i)&mask){ bs.push_back(i); } else{ as.push_back(i); } } for(int i = 0;i<n/2;i++){ if(as[i]>bs[i]){ return 1e9; } } //valid arrangement int i = 0; int cn = 0; while(i<n/2){ //at ith a cn++; i=lower_bound(as.begin(),as.end(),bs[i])-as.begin(); } return cn; } signed main(){ ios::sync_with_stdio(0); cin.tie(0); int n,k; cin >> n >> k; string s; cin >> s; vector<int>as; n*=2; for(int i = 0;i<n;i++){ if(s[i]=='A'){ as.push_back(i); } } int ans = 1e9; for(int mask = 0;mask<(1<<n);mask++){ if(__builtin_popcount(mask)!=n/2){ continue; } if(check(mask,n)<=k){ int curr = 0; vector<int>temp; for(int i = 0;i<n;i++){ if((1<<i)&mask){ } else{ temp.push_back(i); } } for(int i = 0;i<n/2;i++){ curr+=abs(as[i]-temp[i]); } ans=min(ans,curr); } } cout << ans; return 0; }
#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...