제출 #1208492

#제출 시각아이디문제언어결과실행 시간메모리
1208492kunzaZa183Rotating Lines (APIO25_rotate)C++20
5 / 100
1 ms840 KiB
#include <bits/stdc++.h> #include "rotate.h" using namespace std; using ll = long long; void energy(int n, vector<int> v) { const ll mod = 50000; vector<pair<int, int>> vpii; for (int i = 0; i < v.size(); i++) vpii.emplace_back(v[i], i); sort(vpii.begin(), vpii.end()); vector<int> sth; vector<bool> used(n); for (int i = 0; i < vpii.size(); i++) { if (used[i]) continue; int more = 0, les = 0; vector<pair<int, int>> close, far; for (int j = i + 1; j < v.size(); j++) { if (used[j]) continue; if (vpii[j].first - vpii[i].first > mod / 2) { far.push_back(vpii[j]); } else { close.push_back(vpii[j]); } } if (close.empty() && far.empty()) break; // for (auto a : far) cout << a.first << ", " << a.second << " "; // cout << "\n"; // for (auto a : close) cout << a.first << ", " << a.second << " "; // cout << "\n"; if (close.size() > far.size()) { // cout << v[0] << " " << v[1] << "\n"; rotate( {vpii[i].second}, ((close.back().first + mod / 2) % mod - vpii[i].first + mod) % mod); used[close.back().second] = 1; used[vpii[i].second] = 1; } else { rotate({vpii[i].second}, ((far.front().first + mod / 2) % mod - vpii[i].first + mod) % mod); used[far.front().second] = 1; used[vpii[i].second] = 1; } } return; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...