Submission #124247

#TimeUsernameProblemLanguageResultExecution timeMemory
124247tutisMountains (IOI17_mountains)C++17
70 / 100
1096 ms219372 KiB
#pragma GCC optimize ("O3") #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; bitset<2000>ok[2000]; unordered_map<bitset<2000>, int>M; int dp(bitset<2000> x) { int i = x._Find_first(); if (i >= 2000) return 0; int &ans = M[x]; if (ans != 0) return ans; x[i] = false; ans = max(1 + dp(x & ok[i]), dp(x)); return ans; } int maximum_deevs(vector<int> y) { bitset<2000>deevs; for (ll i = 0; i < (ll)y.size(); i++) { ll k = i + 1; for (ll j = i + 1; j < (ll)y.size(); j++) { if ((y[j] - y[i]) * (k - i) >= (y[k] - y[i]) * (j - i)) k = j; if (j != k) { ok[i][j] = true; } else ok[i][j] = false; } deevs[i] = true; } return dp(deevs); }/* int main() { cout << maximum_deevs({ 6, 1, 5, 2, 3, 1}) << endl;//3 cout << maximum_deevs({ 0, 1, 2}) << endl;//1 }/**/

Compilation message (stderr)

mountains.cpp:45:2: warning: "/*" within comment [-Wcomment]
 }/**/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...