제출 #586048

#제출 시각아이디문제언어결과실행 시간메모리
586048jasmin자동 인형 (IOI18_doll)C++14
0 / 100
1 ms340 KiB
#include<bits/stdc++.h>
using namespace std;
#include<doll.h>
//#define int long long

int ind;
vector<int> x;
vector<int> y;

/*void answer(vector<int> c, vector<int> x, vector<int> y){
    cout << c.size() << "\n";
    for(auto e: c){
        cout << e << " ";
    }
    cout << "\n";
    cout << x.size() << "\n";
    for(int i=0; i<(int)x.size(); i++){
        cout << x[i] << " " << y[i] << "\n";
    }
}*/

int create_tree(int h, int maxh, int num, vector<int>& a){
    if(h==maxh){
        if(num>=(int)a.size()) return -1;
        return -a[num];
    }

    int child0=create_tree(h+1, maxh, num, a);
    int child1=create_tree(h+1, maxh, num+(1<<h), a);

    if(child1==-1) return child0;
    x.push_back(-child0);
    y.push_back(-child1);

    int i=ind;
    ind++;
    return i;
}

int pow2(int x){
    int ans=0;
    int p=1;
    while(p<x){
        ans++;
        p*=2;
    }
    return ans;
}

void create_circuit(int m, vector<int> a){
    vector<vector<int> > adi(m+1);
    int n=a.size();
    for(int i=0; i<n; i++){
        adi[a[i]].push_back(a[i+1]);
    }

    x.clear();
    y.clear();
    ind=1;
    vector<int> c(m+1, 0);
    c[0]=a[0];
    for(int i=0; i<n; i++){
        if(adi[i].size()==0) continue;
        if(adi[i].size()==1){
            c[i]=adi[i][0];
            continue;
        }

        int maxh=pow2(adi[i].size());
        c[i]=-create_tree(0, maxh, 0, adi[i]);
    }

    answer(c, x, y);
}

/*signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);

    int m, n;
    cin >> m >> n;
    vector<int> a(n);
    for(int i=0; i<n; i++){
        cin >> a[i];
    }
    create_circuit(m, a);
}*/
#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...