Submission #367357

#TimeUsernameProblemLanguageResultExecution timeMemory
367357lookcookGrowing Vegetable is Fun 3 (JOI19_ho_t3)C++17
0 / 100
1102 ms975112 KiB
#include <bits/stdc++.h> #define int long long using namespace std; int dp[3][70][70][70][70]; // 0 = r, 1 = g, 2 = y int n; vector<int> r, g, y; int rec(int pos, int rp, int gp, int yp, int lst) { if (pos == n) return 0; if (dp[lst][pos][rp][gp][yp] != -1) return dp[lst][pos][rp][gp][yp]; int res = 1e15; if (r.size()!=rp && lst!=0) res = min(res, rec(pos+1, rp+1, gp, yp, 0) + abs(r[rp]-pos)); if (g.size()!=gp && lst!=1) res = min(res, rec(pos+1, rp, gp+1, yp, 1) + abs(g[gp]-pos)); if (y.size()!=yp && lst!=2) res = min(res, rec(pos+1, rp, gp, yp+1, 2) + abs(y[yp]-pos)); dp[lst][pos][rp][gp][yp] = res; return res; } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); for (int i = 0; i < 3; i++) for (int a = 0; a < 70; a++) for (int b = 0; b < 70; b++) for (int c = 0; c < 70; c++) for (int d = 0; d < 70; d++) dp[i][a][b][c][d] = -1; string s; cin >> n >> s; for (int i = 0; i < n; i++) { if (s[i] == 'R') r.push_back(i); if (s[i] == 'G') g.push_back(i); if (s[i] == 'Y') y.push_back(i); } int res = min(rec(0,0,0,0,1),rec(0,0,0,0,0)); if (res >= 1e15) cout << "-1\n"; else cout << res/2 << '\n'; }

Compilation message (stderr)

joi2019_ho_t3.cpp: In function 'long long int rec(long long int, long long int, long long int, long long int, long long int)':
joi2019_ho_t3.cpp:15:17: warning: comparison of integer expressions of different signedness: 'std::vector<long long int>::size_type' {aka 'long unsigned int'} and 'long long int' [-Wsign-compare]
   15 |     if (r.size()!=rp && lst!=0) res = min(res, rec(pos+1, rp+1, gp, yp, 0) + abs(r[rp]-pos));
      |         ~~~~~~~~^~~~
joi2019_ho_t3.cpp:16:17: warning: comparison of integer expressions of different signedness: 'std::vector<long long int>::size_type' {aka 'long unsigned int'} and 'long long int' [-Wsign-compare]
   16 |     if (g.size()!=gp && lst!=1) res = min(res, rec(pos+1, rp, gp+1, yp, 1) + abs(g[gp]-pos));
      |         ~~~~~~~~^~~~
joi2019_ho_t3.cpp:17:17: warning: comparison of integer expressions of different signedness: 'std::vector<long long int>::size_type' {aka 'long unsigned int'} and 'long long int' [-Wsign-compare]
   17 |     if (y.size()!=yp && lst!=2) res = min(res, rec(pos+1, rp, gp, yp+1, 2) + abs(y[yp]-pos));
      |         ~~~~~~~~^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...