Submission #1279790

#TimeUsernameProblemLanguageResultExecution timeMemory
1279790raphaelpTeams (CEOI11_tea)C++20
50 / 100
421 ms69952 KiB
#include <bits/stdc++.h> using namespace std; void update(vector<vector<int>> &dp, int x) { } int main() { int N; cin >> N; vector<pair<int, int>> sorted(N); for (int i = 0; i < N; i++) { cin >> sorted[i].first; sorted[i].second = i + 1; } sort(sorted.begin(), sorted.end()); vector<vector<int>> dp(N + 1, {0, 0, 0}); for (int i = N; i > 0; i--) { if (dp[i][0] == 0 && i != N) continue; if (dp[i][1] == -(int)ceil((double)(N - i) / dp[i][0])) dp[i][2] = i + floor((double)(N - i) / dp[i][0]); dp[i - 1] = max(dp[i - 1], {dp[i][0], min(dp[i][1], -(int)ceil((double)(N - i + 1) / dp[i][0])), dp[i][2]}); if (sorted[i - 1].first <= i) dp[i - sorted[i - 1].first] = max(dp[i - sorted[i - 1].first], {dp[i][0] + 1, min(dp[i][1], -sorted[i - 1].first), i}); } cout << dp[0][0] << '\n'; int x = 0; while (x < N) { cout << dp[x][2] - x << ' '; int temp = dp[x][2]; while (x < temp) { cout << sorted[x].second << ' '; x++; } cout << '\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...
#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...