Submission #1277402

#TimeUsernameProblemLanguageResultExecution timeMemory
1277402PieArmyGrowing Vegetable is Fun 3 (JOI19_ho_t3)C++20
15 / 100
422 ms798692 KiB
#include<bits/stdc++.h> typedef long long ll; #define pb push_back #define fr first #define sc second #define endl '\n' using namespace std; int n; int arr[423]; vector<int>app[3]; int dp[423][423][423][3]; int main(){ ios_base::sync_with_stdio(23^23);cin.tie(NULL); cin>>n; for(int i=1;i<=n;i++){ char c;cin>>c; if(c=='R')arr[i]=1; if(c=='Y')arr[i]=2; app[arr[i]].pb(i); } for(int i=1;i<=n;i++){ for(int j=0;j<=n;j++){ for(int l=0;l<=n;l++){ for(int r=0;r<3;r++){ dp[i][j][l][r]=1e9; } } } } if(app[0].size())dp[1][1][0][0]=app[0][0]-1; if(app[1].size())dp[1][0][1][1]=app[1][0]-1; if(app[2].size())dp[1][0][0][2]=app[2][0]-1; for(int i=1;i<n;i++){ for(int a=0;a<=i;a++){ for(int b=0;b<=i-a;b++){ for(int l=0;l<3;l++){ if(dp[i][a][b][l]==1e9)continue; int c=i-a-b; if(l!=0&&a<app[0].size())dp[i+1][a+1][b][0]=min(dp[i+1][a+1][b][0],dp[i][a][b][l]+max(0,app[0][a]-i-1)); if(l!=1&&b<app[1].size())dp[i+1][a][b+1][1]=min(dp[i+1][a][b+1][1],dp[i][a][b][l]+max(0,app[1][b]-i-1)); if(l!=2&&c<app[2].size())dp[i+1][a][b][2]=min(dp[i+1][a][b][2],dp[i][a][b][l]+max(0,app[2][c]-i-1)); } } } } int ans=min(min(dp[n][app[0].size()][app[1].size()][0],dp[n][app[0].size()][app[1].size()][1]),dp[n][app[0].size()][app[1].size()][2]); if(ans==1e9)ans=-1; cout<<ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...