Submission #310083

#TimeUsernameProblemLanguageResultExecution timeMemory
310083fishy15Teams (CEOI11_tea)C++14
0 / 100
521 ms262148 KiB
#include <iostream> #include <iomanip> #include <fstream> #include <vector> #include <array> #include <algorithm> #include <utility> #include <map> #include <queue> #include <set> #include <cmath> #include <cstdio> #include <cstring> #define ll long long #define ld long double #define eps 1e-8 #define MOD 1000000007 #define INF 0x3f3f3f3f #define INFLL 0x3f3f3f3f3f3f3f3f // change if necessary #define MAXN 1000010 using namespace std; int n; pair<int, int> players[MAXN]; // {num_teams, max_size, cur_size} array<int, 3> dp[MAXN]; vector<vector<int>> ans; array<int, 3> cmp(array<int, 3> &a, array<int, 3> b) { if (a[0] == b[0]) { if (a[1] == b[1]) { return a = min(a, b); } return a = min(a, b); } return a = max(a, b); } int main() { cin.tie(0)->sync_with_stdio(0); cin >> n; for (int i = 0; i < n; i++) { cin >> players[i].first; players[i].second = i; } sort(players, players + n, greater<pair<int, int>>()); for (int i = 0; i <= n; i++) { dp[i] = {-1, 0, 0}; } dp[players[0].first] = {1, players[0].first, players[0].first}; for (int i = 0; i < n; i++) { if (dp[i][0] != -1) { cmp(dp[i + 1], {dp[i][0], max(dp[i][1], dp[i][2] + 1), dp[i][2]}); cmp(dp[i + players[i].first], {dp[i][0] + 1, max(dp[i][1], players[i].first), players[i].first}); } } int cur = n; while (cur > 0) { int nxt_cur = cur - dp[cur][2]; ans.push_back({}); for (int i = nxt_cur; i < cur; i++) { ans.back().push_back(players[i].second); } cur = nxt_cur; } cout << dp[n][0] << '\n'; for (auto &v : ans) { cout << v.size() << ' '; for (int i : v) { cout << i + 1 << ' '; } cout << '\n'; } return 0; }
#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...