Submission #337422

#TimeUsernameProblemLanguageResultExecution timeMemory
337422ryangohcaNaan (JOI19_naan)C++17
100 / 100
435 ms95468 KiB
#include <bits/stdc++.h> #define int long long #define pii pair<int, int> using namespace std; int nums[2000][2000]; pii cuts[2000][2000]; vector<pii> confirmed; vector<int> order; bool ordered[2000]; inline int read() { int g; cin >> g; return g; } main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n = read(), l = read(); for (int i = 0; i < n; i++){ int need = 0; for (int j = 0; j < l; j++){ cin >> nums[i][j]; nums[i][j] *= n; need += nums[i][j]; } need /= n; cuts[i][0] = {0, 0}; int idxwhole = 0, idxpart = 0; int curr = 0; for (int j = 1; j < n; j++){ while (need > curr){ int willtake = nums[i][idxwhole] - idxpart; if (curr + willtake <= need){ curr += willtake; idxwhole++; idxpart = 0; } else { idxpart += need - curr; curr = need; } } cuts[i][j] = pii(idxwhole*nums[i][idxwhole]+idxpart, nums[i][idxwhole]); curr = 0; } } for (int i = 1; i < n; i++){ auto take = pair<pii, int>({1e9, 1}, -1); for (int j = 0; j < n; j++){ if (ordered[j]) continue; pii curr = cuts[j][i]; if ((__int128_t)take.first.first * curr.second - (__int128_t) take.first.second * curr.first <= 0) continue; take = {curr, j}; } ordered[take.second] = true; confirmed.push_back({take.first.first, take.first.second}); order.push_back(take.second); } for (int i = 0; i < n; i++){ if (!ordered[i]) order.push_back(i); } for (auto [a, b] : confirmed){ int f = __gcd(a, b); cout << a/f << ' ' << b/f << '\n'; } for (auto i : order) cout << i + 1 << ' '; cout << endl; }

Compilation message (stderr)

naan.cpp:15:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   15 | main(){
      |      ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...