제출 #1107409

#제출 시각아이디문제언어결과실행 시간메모리
1107409vjudge1Growing Vegetable is Fun 3 (JOI19_ho_t3)C++17
15 / 100
994 ms28584 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define sz(x) x.size() #define pb push_back #define F first #define S second #define nl '\n' const int inf = 1e12; bool ch( string s ) { for( int i = 1; i < sz(s); ++i ) if( s[i] == s[i - 1] ) return false; return true; } void solve() { int n; string s; cin >>n >>s; int cntr = 0, cntg = 0; vector< int >r, g; int pr[n], pg[n]; pr[0] = pg[0] = 0; for( int i = 0; i < n; ++i ) { if( i > 0 ) { pr[i] = pr[i - 1]; pg[i] = pg[i - 1]; } if( s[i] == 'R' ) { r.pb( i ); ++pr[i]; ++cntr; } if( s[i] == 'G' ) { g.pb( i ); ++pg[i]; ++cntg; } } if( cntg + cntr == n ) { if( cntg > cntr ) { swap(cntr, cntg); swap(r, g); for( int i = 0; i < n; ++i ) swap(pr[i], pg[i]); } if( cntr - cntg > 1 ) { cout <<-1 <<nl; return; } int ans = 0; if( cntr > cntg ) { int pos = 1; for( int i: g ) { ans += abs(pos - i); pos += 2; } } else { int cnt1 = 0, cnt2 = 0, pos = 0; for( int i: r ) { cnt1 += abs(i - pos); pos += 2; } pos = 0; for( int i: g ) { cnt2 += abs(i - pos); pos += 2; } ans = min(cnt1, cnt2); } cout <<ans <<nl; return; } else { int ans = inf; map<string, int>mp; queue< string >q; mp[s] = 0; q.push(s); while( !q.empty() ) { string v = q.front(); q.pop(); if( ch(v) ) { ans = min(ans, (int)mp[v]); continue; } for( int i = 1; i < n; ++i ) { string v1 = v; swap(v1[i], v1[i - 1]); if( !mp.count(v1) ) { mp[v1] = mp[v] + 1; q.push(v1); } } } cout <<ans; } } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); // freopen("input.txt", "r", stdin); // freopen("output.txt", "w", stdout); int T = 1; // cin >>T; while( T-- ) solve(); }

컴파일 시 표준 에러 (stderr) 메시지

joi2019_ho_t3.cpp: In function 'bool ch(std::string)':
joi2019_ho_t3.cpp:16:20: 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]
   16 |  for( int i = 1; i < sz(s); ++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...