답안 #1074119

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1074119 2024-08-25T08:08:44 Z TB_ 자동 인형 (IOI18_doll) C++17
53 / 100
88 ms 18324 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);
        fo(j, ext){
            ll current = 1;
            while(current<ext){
                ll sta = state[current]; 
                state[current] = !state[current];
                current*=2;
                if(sta)current++;
            }
            if(j<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){
                x.pb(-cou-i*2);
                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);
}



// int main(){

//     vector<int> st = {1, 2, 1, 2, 1, 2};
//     create_circuit(2, st);

//     return 0;
// }


# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 18 ms 6620 KB Output is correct
3 Correct 14 ms 5084 KB Output is correct
4 Correct 1 ms 600 KB Output is correct
5 Correct 8 ms 4048 KB Output is correct
6 Correct 21 ms 7900 KB Output is correct
7 Correct 0 ms 344 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 18 ms 6620 KB Output is correct
3 Correct 14 ms 5084 KB Output is correct
4 Correct 1 ms 600 KB Output is correct
5 Correct 8 ms 4048 KB Output is correct
6 Correct 21 ms 7900 KB Output is correct
7 Correct 0 ms 344 KB Output is correct
8 Correct 32 ms 7248 KB Output is correct
9 Correct 30 ms 8656 KB Output is correct
10 Correct 49 ms 11036 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 0 ms 344 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 18 ms 6620 KB Output is correct
3 Correct 14 ms 5084 KB Output is correct
4 Correct 1 ms 600 KB Output is correct
5 Correct 8 ms 4048 KB Output is correct
6 Correct 21 ms 7900 KB Output is correct
7 Correct 0 ms 344 KB Output is correct
8 Correct 32 ms 7248 KB Output is correct
9 Correct 30 ms 8656 KB Output is correct
10 Correct 49 ms 11036 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 0 ms 344 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 62 ms 12800 KB Output is correct
15 Correct 33 ms 7644 KB Output is correct
16 Correct 47 ms 11528 KB Output is correct
17 Correct 0 ms 348 KB Output is correct
18 Correct 0 ms 348 KB Output is correct
19 Correct 0 ms 348 KB Output is correct
20 Correct 65 ms 13336 KB Output is correct
21 Correct 1 ms 344 KB Output is correct
22 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Partially correct 1 ms 348 KB Output is partially correct
2 Correct 33 ms 7844 KB Output is correct
3 Partially correct 66 ms 12996 KB Output is partially correct
4 Partially correct 63 ms 14528 KB Output is partially correct
# 결과 실행 시간 메모리 Grader output
1 Partially correct 1 ms 348 KB Output is partially correct
2 Correct 33 ms 7844 KB Output is correct
3 Partially correct 66 ms 12996 KB Output is partially correct
4 Partially correct 63 ms 14528 KB Output is partially correct
5 Partially correct 69 ms 15028 KB Output is partially correct
6 Partially correct 76 ms 15540 KB Output is partially correct
7 Partially correct 66 ms 15492 KB Output is partially correct
8 Partially correct 70 ms 15884 KB Output is partially correct
9 Partially correct 53 ms 11280 KB Output is partially correct
10 Partially correct 88 ms 18324 KB Output is partially correct
11 Partially correct 71 ms 16564 KB Output is partially correct
12 Partially correct 49 ms 10856 KB Output is partially correct
13 Partially correct 48 ms 10176 KB Output is partially correct
14 Partially correct 44 ms 10184 KB Output is partially correct
15 Partially correct 45 ms 9916 KB Output is partially correct
16 Partially correct 1 ms 604 KB Output is partially correct
17 Partially correct 36 ms 9076 KB Output is partially correct
18 Partially correct 37 ms 9060 KB Output is partially correct
19 Partially correct 39 ms 9408 KB Output is partially correct
20 Partially correct 57 ms 12476 KB Output is partially correct
21 Partially correct 67 ms 14428 KB Output is partially correct
22 Partially correct 53 ms 11620 KB Output is partially correct