Submission #80886

#TimeUsernameProblemLanguageResultExecution timeMemory
80886MatheusLealVHokej (COCI17_hokej)C++17
0 / 120
215 ms39144 KiB
#include <bits/stdc++.h> #define N 500050 #define int long long #define f first #define s second using namespace std; typedef pair<int, int> pii; struct T { int f, s, id; } v[N]; bool cmp(T A, T B) { return A.f > B.f; } int n, m, limite[N]; int32_t main() { ios::sync_with_stdio(false); cin.tie(0); cin>>m>>n; for(int i = 1; i <= n; i++) { cin>>v[i].f>>v[i].s; v[i].id = i; } for(int i = 1; i <= n; i++) limite[i] = 1000000000; sort(v + 1, v + n + 1, cmp); stack<T> fila; for(int i = n; i >= 1; i--) fila.push(v[i]); int total = 0, sub = 0, ans = 0, tempo = 0; vector<T> subs; int ant = -1; while(!fila.empty() and total < 6*m) { int qual = fila.top().f, resta = fila.top().s, id = fila.top().id; fila.pop(); if(sub + resta > m) { ans += (m - sub) * qual; total += (m - sub) * qual; if(m - resta > 0) fila.push({qual, resta - (m - resta), id}); sub = 0; subs.push_back({tempo, ant, id}); ant = -1; tempo = 0; continue; } sub += resta; total += resta; ans += qual * resta; subs.push_back({tempo, ant, id}); tempo += resta; if(sub == m) { sub = 0; ant = -1; tempo = 0; continue; } ant = id; } cout<<ans<<"\n"; sort(subs.begin(), subs.end(), cmp); reverse(subs.begin(), subs.end()); for(int i = 0; i < 6; i++) cout<<subs[i].id<<" \n"[i == 5]; cout<<max(0LL, (int)subs.size() - 6LL)<<"\n"; for(int i = 6; i < subs.size(); i++) { auto x = subs[i]; cout<<x.f<<" "<<x.s<<" "<<x.id<<"\n"; } }

Compilation message (stderr)

hokej.cpp: In function 'int32_t main()':
hokej.cpp:108:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i = 6; i < subs.size(); i++)
                 ~~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...