Submission #1147429

#TimeUsernameProblemLanguageResultExecution timeMemory
1147429Hamed_GhaffariChorus (JOI23_chorus)C++20
16 / 100
26 ms328 KiB
#include<bits/stdc++.h> using namespace std;\ #define SZ(x) int(x.size()) #define all(x) x.begin(), x.end() #define pb push_back int get(string s) { int bal = 0; for(int i=0; i<SZ(s); i++) { bal += s[i]=='A' ? 1 : -1; if(bal<0) return 1e9; } vector<int> A, B; for(int i=SZ(s)-1; i>=0; i--) (s[i]=='A'?A:B).pb(i); int ans=0; while(!A.empty()) { ans++; int ct=0; while(!A.empty() && A.back()<B.back()) { ct++; A.pop_back(); } while(ct--) B.pop_back(); } return ans; } int dis(string s, string t) { vector<int> vs, vt; for(int i=0; i<SZ(s); i++) { if(s[i]=='A') vs.pb(i); if(t[i]=='A') vt.pb(i); } int ans = 0; for(int i=0; i<SZ(vs); i++) ans += abs(vs[i]-vt[i]); return ans; } int32_t main() { cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0); int n, k; cin >> n >> k; string s; cin >> s; assert(n<=10); int ans = 1e9; string t=s; sort(all(t)); do { if(get(t)<=k) ans = min(ans, dis(s, t)); } while(next_permutation(all(t))); cout << ans << '\n'; 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...