Submission #1111362

#TimeUsernameProblemLanguageResultExecution timeMemory
1111362DuongKietTeams (CEOI11_tea)C++17
0 / 100
209 ms23152 KiB
#include <bits/stdc++.h> #define N 1000005 #define inf 1e18 #define ll long long #define ii pair <int, int> #define pb push_back #define all(x) x.begin(), x.end() #define fi first #define se second #define SZ(x) (int) x.size() const long long Mod = 1e9 + 7; using namespace std; int n; struct cauthu{ int c, id; }a[N]; struct slteam{ int c, id; }; struct cmp{ bool operator()(slteam &a, slteam &b){ return a.c > b.c; } }; void init(){ cin >> n; for (int i = 1; i <= n; i++){ cin >> a[i].c; a[i].id = i; } sort(a + 1, a + 1 + n, [&](cauthu a, cauthu b){ if (a.c == b.c) return a.id > b.id; return a.c > b.c; }); vector <vector<int> > team; vector <int> maketeam; int cur = -1; for (int i = 1; i <= n; i++){ if (cur == -1){ cur = a[i].c - 1; maketeam.pb(a[i].id); continue; } if (cur > 0){ cur--; maketeam.pb(a[i].id); }else{ cur = a[i].c - 1; team.pb(maketeam); maketeam.clear(); maketeam.pb(a[i].id); } } // if (cur > 0){ // // priority_queue<slteam, vector <slteam>, cmp> q; // for (int i = 0; i < SZ(team); i++) // q.push({SZ(team[i]), i}); // // sort(all(maketeam), [&](int u, int v){return a[u].c < a[v].c;}); // // while (a[maketeam.back()].c > SZ(maketeam) && !maketeam.empty()){ // slteam k = q.top(); // team[k.id].pb(maketeam.back()); // maketeam.pop_back(); // if (maketeam.empty()) break; // } // if (!maketeam.empty()) team.pb(maketeam); //// cout << "YES"; //// cout << maketeam.back(); // } // else if (!maketeam.empty()) team.pb(maketeam); cout << team.size() << '\n'; for (vector <int> cur: team){ cout << cur.size() << ' '; for (int x: cur) cout << x << " "; cout << '\n'; } } signed main() { ios_base::sync_with_stdio(false); cin.tie(0);cout.tie(0); #define task "task" if (fopen(task".inp", "r")){ freopen(task".inp","r",stdin); freopen(task".out","w",stdout); } init(); return 0; }

Compilation message (stderr)

tea.cpp: In function 'int main()':
tea.cpp:92:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   92 |         freopen(task".inp","r",stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
tea.cpp:93:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   93 |         freopen(task".out","w",stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
#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...