Submission #337411

#TimeUsernameProblemLanguageResultExecution timeMemory
337411ryangohcaNaan (JOI19_naan)C++17
0 / 100
1 ms492 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; need = curr; } } cuts[i][j] = pii(idxwhole, idxpart); } } for (int i = 1; i < n; i++){ auto take = pair<pii, int>({INT_MAX, INT_MAX}, -1); for (int j = 0; j < n; j++){ if (ordered[j]) continue; pii curr = cuts[j][i]; if (curr.first > take.first.first) continue; else if (curr.first == take.first.first){ if (curr.second > take.first.second) continue; } take = {curr, j}; } ordered[take.second] = true; confirmed.push_back({take.first.first*nums[take.second][take.first.first]+take.first.second, nums[take.second][take.first.first]}); 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...