#include <bits/stdc++.h>
using namespace std;
using ll = long long;
ll n;
vector<int> v;
vector<int> pos;
vector<array<int, 2>> a;
void rotate(vector<int> t, int x);
void prepare(int nn, vector<int> vv) {
n = nn; v = vv; pos.resize(n);
for (int i = 0; i < v.size(); i ++) a.push_back({v[i], i});
sort(a.begin(), a.end());
for (int i = 0; i < v.size(); i ++) v[i] = a[i][0], pos[i] = a[i][1];
vector<int> cur_vector = v;
}
void sub1() {
pos.resize(n);
for (int i = 0; i < v.size(); i ++) a.push_back({v[i], i});
sort(a.begin(), a.end());
for (int i = 0; i < v.size(); i ++) v[i] = a[i][0], pos[i] = a[i][1];
vector<int> cur_vector = v;
}
ll cal(vector<int> v) {
ll res = 0;
for (int i = 0; i < (int)v.size(); i ++) {
for (int j = i + 1; j < (int)v.size(); j ++) {
int d = abs(v[i] - v[j]);
res += min(d, 50000 - d);
}
} return res;
}
void energy(int nn, vector<int> vv) {
prepare(nn, vv);
if (v.back() <= 25000) {sub1(); return;}
{
vector<int> v;
for (int i = 0; i < n; i ++) v.push_back(i);
rotate(v, - v[0] + 100000);
}
ll old_value = cal(v);
for (;;) {
if (v.back() <= 25000) break;
for (int i = n - 1; i >= 1; i --) {
vector<int> cur = v;
for (int j = v[i] - 1; j >= 0; j --) {
cur[i] = j;
if (!cal(cur)) {cur[i] = v[i]; break;}
rotate({pos[i]}, j - v[i] + 100000);
v[i] = j;
}
}
}
for (int i = 0; i < n / 2; i ++) rotate({pos[i]}, 0 - v[i] + 100000);
for (int i = n / 2; i < n; i ++) rotate({pos[i]}, 25000 - v[i] + 100000);
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |