Submission #1364910

#TimeUsernameProblemLanguageResultExecution timeMemory
1364910gayRotating Lines (APIO25_rotate)C++20
0 / 100
1 ms2372 KiB
#include <bits/stdc++.h>

using namespace std;

using ld = long double;

/*vector<int> v;

void rotate(std::vector<int> t, int x) {
    for (int i = 0; i < t.size(); i++) {
        v[t[i]] = (v[t[i]] + x) % 50000;
    }
}*/

void rotate(std::vector<int> t, int x);

void energy(int n, vector<int> v) {
    vector<vector<int>> pos(50000);
    vector<int> cnt(50000);
    for (int i = 0; i < n; i++) {
        pos[v[i]].push_back(i);
        cnt[v[i]]++;
    }
    for (int i = 1; i < 50000; i++) {
        cnt[i] += cnt[i - 1];
    }
    int rf = -1;
    for (int r = 25000; r < 50000; r++) {
        int l = r - 25000 - 1;
        int col = cnt[r];
        if (l >= 0) col -= cnt[l];
        if (col - 1 >= n - col) {
            rf = r;
            break;
        }
    }
    if (rf == -1) return;
    for (int i = rf; i >= rf - 25000; i--) {
        int x = i - (rf - 25000);
        rotate(pos[i], x);
        for (auto j : pos[i]) {
            v[j] = rf - 25000;
        }
    }
    vector<pair<int, int>> a;
    for (int i = 0; i < n; i++) {
        if (v[i] < 25000) {
            a.emplace_back(v[i], i);
        }
    }
    sort(a.begin(), a.end());
    int m = n / 2;
    for (int i = 0; i < m; i++) {
        if (a[i].first == 0) continue;
        vector<int> t = {a[i].second};
        int x = 50000 - a[i].first;
        rotate(t, x);
    }
    for (int i = m; i < a.size(); i++) {
        if (a[i].first == 25000) continue;
        vector<int> t = {a[i].second};
        int x = 25000 - a[i].first;
        rotate(t, x);
    }
}

/*int main() {
    int n;
    cin >> n;
    v.resize(n);
    for (int i = 0; i < n; i++) {
        cin >> v[i];
    }
    energy(n);
}*/
#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...