Submission #1317808

#TimeUsernameProblemLanguageResultExecution timeMemory
1317808vtnooGrowing Vegetable is Fun 3 (JOI19_ho_t3)C++20
0 / 100
0 ms332 KiB
#include <bits/stdc++.h> #define ll long long #define all(x) x.begin(), x.end() #define ii pair<ll,ll> #define fst first #define snd second #define sz(x) (int)x.size() #define pb push_back using namespace std; const int MAXN=405; int fen[MAXN]; int que(int x){ int v=0; for(;x;x-=x&-x){ v+=fen[x]; } return v; } void upd(int x,int v){ for(;x<MAXN;x+=x&-x){ fen[x]+=v; } } int main(){ int n;cin>>n; string s;cin>>s; // si tengo una secuencia de 10001101.. // entonces mi respuesta debería ser 101010101... multiset<int>red,green; for(int i=0;i<n;i++){ if(s[i]=='G'){ green.insert(i); }else red.insert(i); } char act=s[0]; if(act=='R')red.erase(red.begin()); else green.erase(green.begin()); int ans=0,i=1; while(i<n){ act=(act=='R'?'G':'R'); if(s[i]!=act){ if(s[i]=='R'){ if(!sz(green)){ cout<<-1<<endl; return 0; } ans+=*green.begin()-i; green.erase(green.begin()); act=(act=='R'?'G':'R'); i+=2; }else{ if(!sz(red)){ cout<<-1<<endl; return 0; } ans+=*red.begin()-i; red.erase(red.begin()); act=(act=='R'?'G':'R'); i+=2; } } else{ if(act=='R')red.erase(red.begin()); else green.erase(green.begin()); } i++; } cout<<ans<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...