Submission #532537

#TimeUsernameProblemLanguageResultExecution timeMemory
5325378e7Naan (JOI19_naan)C++17
100 / 100
391 ms103236 KiB
//Challenge: Accepted #include <bits/stdc++.h> using namespace std; #ifdef zisk void debug(){cout << endl;} template<class T, class ... U> void debug(T a, U ... b){cout << a << " ", debug(b...);} template<class T> void pary(T l, T r) { while (l != r) cout << *l << " ", l++; cout << endl; } #else #define debug(...) 0 #define pary(...) 0 #endif #define ll long long #define maxn 2005 #define pii pair<ll, ll> #define ff first #define ss second #define io ios_base::sync_with_stdio(0);cin.tie(0); const ll inf = 1<<30; ll a[maxn][maxn]; pii b[maxn][maxn]; bool vis[maxn]; int main() { io int n, l; cin >> n >> l; for (int i = 0;i < n;i++) { ll tot = 0; for (int j = 0;j < l;j++) { cin >> a[i][j]; tot += a[i][j]; a[i][j] *= n; } ll cur = 0, ind = 0; for (int j = 1;j <= n;j++) { while (ind < l && cur + a[i][ind] <= tot*j) { cur += a[i][ind]; ind++; } if (ind == l) b[i][j] = {l, 1}; else b[i][j] = {(tot * j - cur) + ind*a[i][ind], a[i][ind]}; } } auto cmp = [&] (pii x, pii y){return x.ff * (y.ss/n) < (x.ss/n) * y.ff;}; vector<int> ans; vector<pii> frac; for (int i = 1;i <= n;i++) { pii best = {inf, 1}; int bind = 0; for (int j = 0;j < n;j++) { if (!vis[j] && !cmp(best, b[j][i])) { best = b[j][i]; bind = j; } } ans.push_back(bind+1); vis[bind] = 1; frac.push_back(best); } frac.pop_back(); for (auto i:frac) cout << i.ff << " " << i.ss << "\n"; for (int i:ans) cout << i << " "; cout << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...