Submission #962371

#TimeUsernameProblemLanguageResultExecution timeMemory
9623710npataMonochrome Points (JOI20_monochrome)C++17
25 / 100
105 ms556 KiB
#include<bits/stdc++.h> using namespace std; #define int long long #define vec vector #define pi pair<int, int> #define fst first #define snd second #define pb push_back int n; string s; int mes(vec<pi> p) { int res = 0; int j = p[0].fst; int k = p[0].fst; int cntw = 1; int cntb = 0; for(int i = 0; i<n; i++) { while(k != p[i].fst) { cntw -= s[k]=='W'; cntb -= s[k] == 'B'; k+=1; k %= 2*n; } while(j != p[i].snd) { j += 1; j %= 2*n; cntw += s[j]=='W'; cntb += s[j] == 'B'; } int rw = cntw-1; int orb = n-cntb; res += min(rw, orb); } return res; } int32_t main() { cin >> n; cin >> s; vec<int> b(0); vec<int> w(0); for(int i = 0; i<s.size(); i++) { if(s[i] == 'W') { w.pb(i); } else { b.pb(i); } } int ans = 0; const int SQRTN = 600; int cand = 0; int mx = 0; for(int i = 0; i<n; i+=SQRTN) { // construct possible pairings vec<pi> p; for(int j = 0; j<n; j++) { p.pb({w[j], b[(j+i)%n]}); } int res = mes(p); if(res > mx) cand = i; } for(int i = max(cand-SQRTN, -n); i<cand; i++) { vec<pi> p; for(int j = 0; j<n; j++) { p.pb({w[j], b[(j+i+n)%n]}); } int res = mes(p); ans = max(res, ans); } for(int i = cand; i<cand+SQRTN; i++) { vec<pi> p; for(int j = 0; j<n; j++) { p.pb({w[j], b[(j+i)%n]}); } int res = mes(p); ans = max(res, ans); } cout << ans << '\n'; }

Compilation message (stderr)

monochrome.cpp: In function 'int32_t main()':
monochrome.cpp:50:18: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   50 |  for(int i = 0; i<s.size(); i++) {
      |                 ~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...