Submission #1263621

#TimeUsernameProblemLanguageResultExecution timeMemory
1263621NikoBaoticMonochrome Points (JOI20_monochrome)C++20
4 / 100
2093 ms328 KiB
#include "bits/stdc++.h" using namespace std; typedef long long ll; typedef pair<ll, ll> pii; #define all(x) x.begin(), x.end() #define sz(x) ((int) ((x).size())) #define pb push_back #define F first #define S second #define FIO ios_base::sync_with_stdio(false); cin.tie(0) const int N = 200; int n; string s; int st[N]; int pozB[N]; int pozC[N]; vector<int> v; int run() { int ans = 0; for (int i = 0; i < n * 2; i++) { if (i < v[i]) continue; for (int j = 0; j < n * 2; j++) { st[j] = 0; } int cur = (v[i] + 1) % sz(v); vector<int> k; while (cur != i) { k.pb(cur); st[cur] = 1; cur++; cur %= sz(v); } for (int x : k) { if (st[v[x]] == 0) { ans++; } } } return ans; } int main() { FIO; cin >> n; cin >> s; int cntB = 0; int cntC = 0; for (int i = 0; i < n * 2; i++) { if (s[i] == 'W') { pozB[cntB] = i; cntB++; } if (s[i] == 'B') { pozC[cntC] = i; cntC++; } } vector<int> p; for (int i = 0; i < n; i++) { p.pb(i); } int ans = 0; do { v.clear(); v.resize(n * 2); for (int i = 0; i < n; i++) { int x = pozB[i]; int y = pozC[p[i]]; v[x] = y; v[y] = x; } ans = max(ans, run()); } while (next_permutation(all(p))); cout << ans / 2 << endl; 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...