Submission #1033242

# Submission time Handle Problem Language Result Execution time Memory
1033242 2024-07-24T14:54:02 Z GrindMachine Choreography (IOI23_choreography) C++17
45 / 100
60 ms 9664 KB
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>

using namespace std;
using namespace __gnu_pbds;

template<typename T> using Tree = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
typedef long long int ll;
typedef long double ld;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;

#define fastio ios_base::sync_with_stdio(false); cin.tie(NULL)
#define pb push_back
#define endl '\n'
#define sz(a) (int)a.size()
#define setbits(x) __builtin_popcountll(x)
#define ff first
#define ss second
#define conts continue
#define ceil2(x,y) ((x+y-1)/(y))
#define all(a) a.begin(), a.end()
#define rall(a) a.rbegin(), a.rend()
#define yes cout << "Yes" << endl
#define no cout << "No" << endl

#define rep(i,n) for(int i = 0; i < n; ++i)
#define rep1(i,n) for(int i = 1; i <= n; ++i)
#define rev(i,s,e) for(int i = s; i >= e; --i)
#define trav(i,a) for(auto &i : a)

template<typename T>
void amin(T &a, T b) {
    a = min(a,b);
}

template<typename T>
void amax(T &a, T b) {
    a = max(a,b);
}

#ifdef LOCAL
#include "debug.h"
#else
#define debug(...) 42
#endif

/*

already knew the key solution idea

*/

const int MOD = 1e9 + 7;
const int N = 1e5 + 5;
const int inf1 = int(1e9) + 5;
const ll inf2 = ll(1e18) + 5;

#include "choreography.h"

vector<array<int,2>> a;
int j;
int n;
vector<int> delta(2);
vector<int> p,q;

void init(int n_, std::vector<int> p_) {
    n = n_;
    p = p_;
    q = vector<int>(n);
    rep(i,n) q[p[i]] = i;
    rep(i,n) a.pb({i,p[i]});
    j = 0;
} 

void move_right(int k) {
    delta[j] += k;
    delta[j] %= n;
}

void move_left(int k) {
    move_right(n-k);
}

void swap_places() {
    // rep(i,n){
    //     a[i][j] ^= 1;
    // }
}

void move_around() {
    j ^= 1;
}

int get_position(int d){
    d -= delta[j^1];
    d = (d%n+n)%n;
    
    if(j^1){
        d = q[d];
    }

    int i = a[d][j];
    i += delta[j];
    i %= n;

    return i;
}
# Verdict Execution time Memory Grader output
1 Correct 55 ms 6608 KB Output is correct
2 Correct 56 ms 9660 KB Output is correct
3 Correct 60 ms 9492 KB Output is correct
4 Correct 57 ms 9664 KB Output is correct
5 Correct 37 ms 7488 KB Output is correct
6 Correct 37 ms 7484 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 348 KB 5th lines differ - on the 1st token, expected: '411', found: '410'
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 50 ms 6612 KB Output is correct
2 Correct 52 ms 9148 KB Output is correct
3 Correct 52 ms 9148 KB Output is correct
4 Correct 30 ms 6804 KB Output is correct
5 Correct 31 ms 6980 KB Output is correct
6 Correct 30 ms 6976 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 50 ms 6612 KB Output is correct
2 Correct 52 ms 9148 KB Output is correct
3 Correct 52 ms 9148 KB Output is correct
4 Correct 30 ms 6804 KB Output is correct
5 Correct 31 ms 6980 KB Output is correct
6 Correct 30 ms 6976 KB Output is correct
7 Incorrect 50 ms 9152 KB 3rd lines differ - on the 1st token, expected: '74726', found: '64493'
8 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 55 ms 6608 KB Output is correct
2 Correct 56 ms 9660 KB Output is correct
3 Correct 60 ms 9492 KB Output is correct
4 Correct 57 ms 9664 KB Output is correct
5 Correct 37 ms 7488 KB Output is correct
6 Correct 37 ms 7484 KB Output is correct
7 Correct 50 ms 6612 KB Output is correct
8 Correct 52 ms 9148 KB Output is correct
9 Correct 52 ms 9148 KB Output is correct
10 Correct 30 ms 6804 KB Output is correct
11 Correct 31 ms 6980 KB Output is correct
12 Correct 30 ms 6976 KB Output is correct
13 Correct 56 ms 9404 KB Output is correct
14 Correct 55 ms 9408 KB Output is correct
15 Correct 54 ms 9292 KB Output is correct
16 Correct 35 ms 7324 KB Output is correct
17 Correct 35 ms 7508 KB Output is correct
18 Correct 35 ms 7228 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 55 ms 6608 KB Output is correct
2 Correct 56 ms 9660 KB Output is correct
3 Correct 60 ms 9492 KB Output is correct
4 Correct 57 ms 9664 KB Output is correct
5 Correct 37 ms 7488 KB Output is correct
6 Correct 37 ms 7484 KB Output is correct
7 Incorrect 1 ms 348 KB 5th lines differ - on the 1st token, expected: '411', found: '410'
8 Halted 0 ms 0 KB -