#include "rotate.h"
#include <vector>
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const ll FULL_ROTATION = 50000;
ll energyCalc(vector<int> v) {
ll totCost = 0;
for (ll i = 0; i < v.size(); i++) {
for (ll j = i + 1; j < v.size(); j++) {
totCost += min((ll)abs(v[i] - v[j]), FULL_ROTATION - abs(v[i] - v[j]));
}
}
return totCost;
}
void energy(int N, std::vector<int> v) {
ll globalBest = 0;
vector<pair<ll, ll> > instructions;
for (ll currAngle = 0; currAngle < FULL_ROTATION/2; currAngle++) {
ll currAlternative = currAngle + FULL_ROTATION/2;
ll currEnergy = energyCalc(v);
vector<int> currV;
currV.reserve(N);
for (ll i = 0; i < N; i++) currV.push_back(v[i]);
vector<pair<ll, ll> > currentInstructions;
for (ll currRod = 0; currRod < N; currRod++) {
ll tmp = currV[currRod];
currV[currRod] = currAngle;
ll energyIncreaseAngle = energyCalc(currV);
currV[currRod] = tmp;
currV[currRod] = currAlternative;
ll energyIncreaseAlt = energyCalc(currV);
currV[currRod] = tmp;
if (max(energyIncreaseAlt, energyIncreaseAngle) < currEnergy) continue;
if (energyIncreaseAngle >= energyIncreaseAlt) {
currentInstructions.push_back({currRod, currAngle - tmp});
currV[currRod] = currAngle;
} else {
currentInstructions.push_back({currRod, currAlternative - tmp});
currV[currRod] = currAlternative;
}
}
ll finalEnergy = energyCalc(currV);
if (finalEnergy > globalBest) {
globalBest = finalEnergy;
instructions = currentInstructions;
}
}
for (auto &instruct: instructions) {
vector<int> theRod;
theRod.push_back(instruct.first);
rotate(theRod, instruct.second);
}
// rotate({0, 1}, 1500);
// rotate({1}, 25);
}
# | 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... |