Submission #799658

#TimeUsernameProblemLanguageResultExecution timeMemory
799658pudelosGrowing Vegetable is Fun 3 (JOI19_ho_t3)C++17
100 / 100
157 ms134604 KiB
#include <bits/stdc++.h> using namespace std; #define loop(_i, _a, _b) for(int _i=_a; _i<=_b; ++_i) const int maxn=401, maxn2=201, inf=1e9; int n; int cnt[4][maxn][4]; int val[maxn]; string s; int main() { cin.tie(0) -> ios_base::sync_with_stdio(0); cin >> n >> s; int a=0, b=0, c=0; loop(i, 1, n) { int v; if(s[i-1] == 'R') v=1; if(s[i-1] == 'G') v=2; if(s[i-1] == 'Y') v=3; val[i]=v; if(v==1) { ++a; cnt[1][a][2]=b; cnt[1][a][3]=c; } if(v==2) { ++b; cnt[2][b][1]=a; cnt[2][b][3]=c; } if(v==3) { ++c; cnt[3][c][1]=a; cnt[3][c][2]=b; } } vector<vector<vector<vector<int>>>> dp(a+1, vector<vector<vector<int>>>(b+1, vector<vector<int>>(c+1, vector<int>(4, inf)))); dp[0][0][0][1]=0; dp[0][0][0][2]=0; dp[0][0][0][3]=0; loop(i, 0, a) { loop(j, 0, b) { loop(k, 0, c) { if(i<a) dp[i+1][j][k][1]=min(dp[i+1][j][k][1], min(dp[i][j][k][2], dp[i][j][k][3])+abs(j-cnt[1][i+1][2])+abs(k-cnt[1][i+1][3])); if(j<b) dp[i][j+1][k][2]=min(dp[i][j+1][k][2], min(dp[i][j][k][1], dp[i][j][k][3])+abs(i-cnt[2][j+1][1])+abs(k-cnt[2][j+1][3])); if(k<c) dp[i][j][k+1][3]=min(dp[i][j][k+1][3], min(dp[i][j][k][1], dp[i][j][k][2])+abs(i-cnt[3][k+1][1])+abs(j-cnt[3][k+1][2])); } } } int res = inf; loop(i, 1, 3) res=min(res, dp[a][b][c][i]); if(res==inf) cout << "-1"; else cout << res/2; }

Compilation message (stderr)

joi2019_ho_t3.cpp: In function 'int main()':
joi2019_ho_t3.cpp:25:5: warning: 'v' may be used uninitialized in this function [-Wmaybe-uninitialized]
   25 |     if(v==2) {
      |     ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...