답안 #1075118

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1075118 2024-08-25T18:40:38 Z TB_ 자동 인형 (IOI18_doll) C++17
6 / 100
68 ms 14336 KB
#include <bits/stdc++.h>

using namespace std;

#define ll long long
#define fo(i, n) for(ll i = 0; i<(n); i++)
#define pb push_back
#define F first
#define S second
#define deb(x) cout << #x << " = " << (x) << endl 
#define deb2(x, y) cout << #x << " = " << (x)  << ", " << #y << " = " << (y) << endl 
typedef vector<ll> vl;
typedef vector<vl> vvl;

// void answer(std::vector<int> C, std::vector<int> X, std::vector<int> Y){

// }
void answer(std::vector<int> C, std::vector<int> X, std::vector<int> Y);
void create_circuit(int M, std::vector<int> A){
    vvl adj(M+1);
    ll n = A.size();
    adj[0].pb(A[0]);
    fo(i, n){
        if(i<n-1) adj[A[i]].pb(A[i+1]);
        else adj[A[i]].pb(0);
    }
    ll cou = 0;
    vector<int> c, x, y;
    fo(i, M+1){
        cou = x.size();
        ll co = 0;
        if(adj[i].size() == 0){
            c.pb(i);
            continue;
        }
        else if(adj[i].size() == 1){
            c.pb(adj[i][0]);
            continue;
        }
        c.pb(-cou-1);
        ll am = adj[i].size();
        ll ext = 1;
        while(ext<am) ext*=2ll;
        ll am2 = ext-am;
        vl order(ext*2);
        vl state(ext, 0);
        // deb(ext);
        fo(j, ext){
            ll current = 1;
            while(current<ext){
                ll sta = state[current]; 
                state[current] = !state[current];
                current*=2;
                if(sta)current++;
            }
            // deb(am2);
            // deb2(ext-current-1, am2);
            if(ext*2-current-1<am2) order[current] = (-cou-1);
            else order[current] = (adj[i][co++]);
            // deb2(current, order[current]);
        }
        co= 0;
        fo(i, ext){
            if(!i) continue;
            if(i*2<ext){
                if(order[(-cou-i*2)*2] == order[(-cou-i*2)*2+1] && 0) x.pb(order[(-cou-i*2)*2]);
                else x.pb(-cou-i*2);
                if(order[(-cou-i*2-1)*2] == order[(-cou-i*2-1)*2+1] && 0) y.pb(order[(-cou-i*2-1)*2]);
                else y.pb(-cou-i*2-1);
            }else{
                x.pb(order[i*2]);
                y.pb(order[i*2+1]);

            }

        }
    }
    // fo(i, c.size()){
    //     deb(c[i]);
    // }
    // fo(i, x.size()){
    //     deb2(x[i], y[i]);
    // }
    answer(c, x, y);
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 436 KB Output is correct
2 Correct 21 ms 6912 KB Output is correct
3 Correct 15 ms 5600 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 8 ms 4052 KB Output is correct
6 Correct 21 ms 8500 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 436 KB Output is correct
2 Correct 21 ms 6912 KB Output is correct
3 Correct 15 ms 5600 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 8 ms 4052 KB Output is correct
6 Correct 21 ms 8500 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 32 ms 8232 KB Output is correct
9 Correct 32 ms 9680 KB Output is correct
10 Correct 48 ms 12604 KB Output is correct
11 Correct 1 ms 348 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 436 KB Output is correct
2 Correct 21 ms 6912 KB Output is correct
3 Correct 15 ms 5600 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 8 ms 4052 KB Output is correct
6 Correct 21 ms 8500 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 32 ms 8232 KB Output is correct
9 Correct 32 ms 9680 KB Output is correct
10 Correct 48 ms 12604 KB Output is correct
11 Correct 1 ms 348 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Incorrect 68 ms 14336 KB state 'Y'
15 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 344 KB state 'Y'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 348 KB state 'Y'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 348 KB state 'Y'
2 Halted 0 ms 0 KB -