Submission #1071377

#TimeUsernameProblemLanguageResultExecution timeMemory
1071377IgnutCarnival Tickets (IOI20_tickets)C++17
11 / 100
61 ms852 KiB
// Ignut #include <bits/stdc++.h> using namespace std; using ll = long long; const int INF = 1e9 + 123; void allocate_tickets(vector<vector<int>> s); ll find_maximum(int k, vector<vector<int>> x) { int n = x.size(), m = x.front().size(); vector<int> mn, mx; for (int i = 0; i < n; i ++) { mn.push_back(INF), mx.push_back(-INF); for (int j = 0; j < m; j ++) { mn.back() = min(mn.back(), x[i][j]); mx.back() = max(mx.back(), x[i][j]); } } // for (int i = 0; i < n; i ++) { // for (int j = 0; j < m; j ++) { // cout << x[i][j] << ' '; // } // cout << '\n'; // } // for (int i = 0; i < n; i ++) { // cout << mn[i] << '_' << mx[i] << '\n'; // } vector<int> vals; for (int i = 0; i < n; i ++) vals.push_back(mn[i]), vals.push_back(mx[i]); sort(vals.begin(), vals.end()); ll res = -INF; int bestVal = -1; for (int val : vals) { vector<int> vec; for (int i = 0; i < n; i ++) { if (val >= mn[i]) vec.push_back(mn[i]); else vec.push_back(mx[i]); } sort(vec.begin(), vec.end()); ll sum = 0; for (int i = 0; i < n; i ++) sum += abs(vec[i] - vec[n / 2]); // cerr << "try : " << sum << '\n'; if (sum > res) { res = sum; bestVal = val; } } vector<vector<int>> s; for (int i = 0; i < n; i ++) { s.push_back({}); s.back().assign(m, -1); int target = (bestVal >= mn[i] ? mn[i] : mx[i]); for (int j = 0; j < m; j ++) { if (x[i][j] == target) { s.back()[j] = 0; break; } } } allocate_tickets(s); return res; }
#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...