Submission #1368399

#TimeUsernameProblemLanguageResultExecution timeMemory
1368399isctRotating Lines (APIO25_rotate)C++20
5 / 100
3093 ms2088 KiB
#include <bits/stdc++.h>
#include "rotate.h"
using namespace std;

long long find_energy(long long n, vector<int> &v)
{
    long long res = 0;
    for (long long i = 0; i < (long long)v.size(); i++)
    {
        for (long long j = i + 1; j < (int)v.size(); j++)
        {
            int d = abs(v[i] - v[j]);
            res += std::min(d, 50000 - d);
        }
    }
    return res;
}

void energy(int n, vector<int> v)
{

    for (int i = 0; i < n; i++)
    {
        // case 1- you send this to zero
        vector<int> zero(v.begin(), v.end());
        vector<int> ninety(v.begin(), v.end());

        int tozero = 1e5 - v[i];
        int toninety = (25000 - v[i] + 50000) % 50000;

        vector<int> indices;
        for (int j = i; j < n; j++)
        {
            indices.push_back(j);
            zero[j] = (zero[j] + tozero) % 50000;
            ninety[j] = (ninety[j] + toninety) % 50000;
        }

        if (find_energy(n, zero) >= find_energy(n, ninety))
        {
            rotate(indices, tozero);
            v = zero;
        }
        else
        {
            rotate(indices, toninety);
            v = ninety;
        }
    }
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...