Submission #1069059

#TimeUsernameProblemLanguageResultExecution timeMemory
1069059prvocisloGiraffes (JOI22_giraffes)C++17
59 / 100
2391 ms225364 KiB
// Is it a wonder I broke? Let's hear one more joke // Then we could all just laugh until I cry #include <iostream> #include <vector> #include <algorithm> #include <queue> #include <map> #include <set> #include <bitset> typedef long long ll; using namespace std; const int maxn = 305; int dp[maxn][maxn][maxn]; // interval co ostava, zaciatok hodnot, max pocet tych co si mozeme nechat void upd(int& a, int b) { a = max(a, b); } int main() { ios::sync_with_stdio(false); cin.tie(0); int n; cin >> n; vector<int> p(n); for (int i = 0; i < n; i++) cin >> p[i], p[i]--; int ans = 0; for (int l = 0; l < n; l++) for (int r = n - 1; r >= l; r--) { for (int vl = 0; vl + (r - l) < n; vl++) { int vr = vl + r - l; if (l == r) { if (p[l] == vr) upd(ans, dp[l][r][vl] + 1); upd(ans, dp[l][r][vl]); continue; } upd(dp[l + 1][r][vl + 1], dp[l][r][vl] + (p[l] == vl)); upd(dp[l][r - 1][vl + 1], dp[l][r][vl] + (p[r] == vl)); upd(dp[l + 1][r][vl], dp[l][r][vl] + (p[l] == vr)); upd(dp[l][r - 1][vl], dp[l][r][vl] + (p[r] == vr)); } } cout << n - ans << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...