Submission #827192

#TimeUsernameProblemLanguageResultExecution timeMemory
827192OAleksaBaloni (COCI15_baloni)C++14
0 / 100
100 ms131072 KiB
#include <bits/stdc++.h> #define f first #define s second using namespace std; #define int long long const int maxn = 1e6 + 69; vector<int> g[maxn], vis(maxn), cnt(maxn, -1); void dfs(int v) { vis[v] = 1; for(auto u : g[v]) { if(!vis[u]) dfs(u); } } signed main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int tt = 1; //cin >> tt; while(tt--) { int n; cin >> n; vector<int> a(n); for(int i = 0;i < n;i++) cin >> a[i]; int dp[n][n]; for(int i = 0;i < n;i++) for(int j = 0;j < n;j++) dp[i][j] = 1e9; for(int i = 0;i < n;i++) dp[i][i] = 1; for(int i = 1;i < n;i++) { for(int l = 0, r = i;r < n;l++, r++) { dp[l][r] = min(dp[l + 1][r] + 1, dp[l][r]); dp[l][r] = min(dp[l][r - 1] + 1, dp[l][r]); if(a[r - 1] == a[r] + 1) dp[l][r] = min(dp[l][r], dp[l][r - 1]); if(a[l] == a[l + 1] + 1) dp[l][r] = min(dp[l][r], dp[l + 1][r]); if(r - l >= 2 && a[l] == a[r] + 1) dp[l][r] = min(dp[l][r], dp[l + 1][r - 1] + 1); } } cout << dp[0][n - 1]; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...