Submission #1016738

#TimeUsernameProblemLanguageResultExecution timeMemory
1016738AriadnaChoreography (IOI23_choreography)C++17
17 / 100
1067 ms9292 KiB
#include <bits/stdc++.h>

using namespace std;

int n;
vector<int> dancer, pos;
int total = 0;

void move_right(int K) {
    total += K;
}
void move_left(int K) {
    total -= K;
}

void swap_places() {
    for (int i = 0; i < n && total!=0; ++i) pos[i] = (((pos[i]+total)%n)+n)%n;
    for (int i = 0; i < n && total!=0; ++i) dancer[pos[i]] = i;
    total = 0;

    for (int i = 0; i < n; i+=2) {
        swap(pos[i], pos[i+1]);
        swap(dancer[i], dancer[i+1]);
    } 
}

void move_around() {
    for (int i = 0; i < n && total!=0; ++i) pos[i] = (((pos[i]+total)%n)+n)%n;
    for (int i = 0; i < n && total!=0; ++i) dancer[pos[i]] = i;
    total = 0;

    swap(dancer, pos);
}

void init(int N, vector<int> P) {
    n = N;
    pos = dancer = vector<int>(N);
    for (int i = 0; i < N; ++i) {
        dancer[i] = P[i];
        pos[P[i]] = i;
    }
}

int get_position(int D) {
    return (((pos[D]+total)%n)+n)%n;
}
#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...