Submission #1250079

#TimeUsernameProblemLanguageResultExecution timeMemory
1250079ZicrusTriple Peaks (IOI25_triples)C++20
7.71 / 100
15 ms4168 KiB
#include <bits/stdc++.h> #include "triples.h" using namespace std; typedef long long ll; typedef pair<ll, ll> pll; #define all(v) v.begin(), v.end() constexpr ll inf = 1ll << 62ll; mt19937 mt(time(0)); ll _ = 0; ll count_triples(vector<int> h) { return 0; } vector<int> construct_range(int M, int K) { ll n = M; vector<vector<int>> patterns = { {2}, {1, 1, 2}, {2, 3, 4, 1, 2, 1, 3}, {1, 1, 2, 3, 4, 1, 2, 1, 3}, {1, 1, 3, 2, 3, 4, 1, 2, 1, 3} }; vector<int> cnts = {0, 1, 8, 11, 13}; vector<ll> dp(n+1); vector<ll> pat(n+1); dp[patterns[0].size()] = cnts[0]; for (ll i = patterns[0].size() + 1; i <= n; i++) { for (ll j = 0; j < patterns.size(); j++) { if (patterns[j].size() > i) continue; ll val = dp[i - patterns[j].size()] + cnts[j]; if (val > dp[i]) { dp[i] = val; pat[i] = j; } } } vector<int> res(n); ll sz = n; while (sz > 0) { vector<int> p = patterns[pat[sz]]; for (ll i = p.size()-1; i >= 0; i--) { res[sz-1] = p[i]; sz--; } } return res; } #ifdef TEST #include "grader.cpp" #endif
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...