제출 #1237286

#제출 시각아이디문제언어결과실행 시간메모리
1237286nasjesGrowing Vegetable is Fun 3 (JOI19_ho_t3)C++20
15 / 100
0 ms328 KiB
#include <iostream> #include <iomanip> #include <vector> #include <cmath> #include <algorithm> #include <set> #include <queue> #include <map> #include <stack> #include <bitset> #include <string> #include <cstring> #include <iterator> #include <random> using namespace std; typedef long long ll; typedef pair<ll, ll> pll; typedef long double ld; const ll dim = 5*1e3+7; //const ll mod = 1e9 + 7; const ll inf = 1e18 + 77; #define endl "\n" #define fi first #define pb push_back #define se second #define vll vector<ll> ll n, m; pll a[dim]; ll b[dim]; ll check(string &s){ ll fl=1; for(int j=1; j<s.length(); j++){ if(s[j]==s[j-1])fl=0; } return fl; } int main() { ll k, t, u0, v0; string s; cin>>n; cin>>s; string s1=s; ll cnt1=0; ll cnt2=0; ll cnt3=0; for(int i=1; i<=n; i++){ if(s[i-1]=='G')cnt1++; else if(s[i-1]=='R')cnt2++; else cnt3++; } if(cnt1>(n+1)/2 || cnt2>(n+1)/2 || cnt3>(n+1)/2){ cout<<-1<<endl; return 0; } ll ans=0; for(int i=1; i<n; i++){ if(s[i]==s[i-1]){ for(int j=i+1; j<n; j++){ if(s[j]!=s[i]){ ans+=abs(j-i); swap(s[j], s[i]); break; } } } } ll ans1=inf; if(check(s))ans1=ans; s=s1; ans=0; for(int i=1; i<n; i++){ if(s[i]!=s[0]){ s=string(1, s[i])+s.substr(0, i)+s.substr(i+1, n-i+1); ans+=i; break; } } for(int i=1; i<n; i++){ if(s[i]==s[i-1]){ for(int j=i+1; j<n; j++){ if(s[j]!=s[i]){ ans+=abs(j-i); swap(s[j], s[i]); break; } } } } if(check(s))ans1=min(ans1, ans); if(ans1==inf){ cout<<-1<<endl; } else{ cout<<ans1<<endl; } // cout<<s<<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...