Submission #172766

#TimeUsernameProblemLanguageResultExecution timeMemory
172766gs18103Mountains (IOI17_mountains)C++14
100 / 100
139 ms14024 KiB
#include "mountains.h" #include <bits/stdc++.h> #define eb emplace_back #define em emplace #define fi first #define se second #define all(v) v.begin(), v.end() using namespace std; typedef long long ll; typedef pair <int, int> pii; typedef pair <ll, ll> pll; const int MAX = 2020; const int INF = 1<<30; const ll LINF = 1LL<<62; int dp[MAX][MAX]; ll h[MAX]; int f(int s, int e) { if(s > e) return 0; if(dp[s][e] != 0) return dp[s][e]; dp[s][e] = 1; pll high = make_pair(h[s+1] - h[s], 1); int idx = s + 1; for(int i = s + 2; i <= e; i++) { if((h[i] - h[s]) * high.se >= high.fi * (i - s)) { dp[s][e] += f(idx+1, i-1); idx = i; high = make_pair(h[i] - h[s], i - s); } } dp[s][e] += f(idx+1, e); dp[s][e] = max(dp[s][e], f(s+1, e)); return dp[s][e]; } int maximum_deevs(vector <int> y) { int n = y.size(); for(int i = 1; i <= n; i++) { h[i] = y[i-1]; } return f(1, n); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...