Submission #1319294

#TimeUsernameProblemLanguageResultExecution timeMemory
1319294vtnooGrowing Vegetable is Fun 3 (JOI19_ho_t3)C++20
60 / 100
3 ms3976 KiB
#include <bits/stdc++.h> #define L(i, j, k) for(int i = (j); i <= (k); i++) #define R(i, j, k) for(int i = (j); i >= (k); i--) #define ll long long #define sz(a) ((int) a.size()) #define all(a) a.begin(), a.end() #define vi vector<int> #define pb emplace_back #define me(a, x) memset(a, x, sizeof(a)) #define fst first #define snd second #define ii pair<ll, ll> using namespace std; const int nax=61,inf=1e9; int n,dp[4][nax][nax][nax]; //ultimo color usado, cuantos rojos/verdes/amarillos //~ int pf[3][nax]; void chmin(int &a,int b){ a=min(a,b); } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); cin>>n; string s;cin>>s; vector<vi>pos(3); L(i,0,n-1){ if(s[i]=='R'){ pos[0].pb(i); }else if(s[i]=='G'){ pos[1].pb(i); }else{ pos[2].pb(i); } } //~ L(i,1,nax-1)pf[0][i]+=pf[0][i-1],pf[1][i]+=pf[1][i-1],pf[2][i]+=pf[2][i-1]; L(i,0,3)L(j,0,nax-1)L(k,0,nax-1)L(l,0,nax-1)dp[i][j][k][l]=inf; dp[3][0][0][0]=0; L(a,0,sz(pos[0])){ L(b,0,sz(pos[1])){ L(c,0,sz(pos[2])){ int tot=a+b+c; L(lst,0,3){ if(dp[lst][a][b][c]==inf)continue; L(act,0,2){ if(lst!=3&&lst==act)continue; if(act==0&&a==sz(pos[0]))continue; if(act==1&&b==sz(pos[1]))continue; if(act==2&&c==sz(pos[2]))continue; int used=(act==0?a:(act==1?b:c)),piv=pos[act][used]; int cntR=lower_bound(all(pos[0]),piv)-pos[0].begin(); int cntG=lower_bound(all(pos[1]),piv)-pos[1].begin(); int cntY=lower_bound(all(pos[2]),piv)-pos[2].begin(); int smaller=min(cntR,a)+min(cntG,b)+min(cntY,c); int greater=tot-smaller; int na=a+(act==0),nb=b+(act==1),nc=c+(act==2); auto &res=dp[act][na][nb][nc]; chmin(res,dp[lst][a][b][c]+greater); } } } } } int ans=inf; L(i,0,2)ans=min(ans,dp[i][sz(pos[0])][sz(pos[1])][sz(pos[2])]); if(ans==inf)cout<<-1<<endl; else 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...