Submission #759122

# Submission time Handle Problem Language Result Execution time Memory
759122 2023-06-15T19:06:25 Z alexander707070 Mechanical Doll (IOI18_doll) C++14
37 / 100
100 ms 38544 KB
#include<bits/stdc++.h>
#include "doll.h"
#define MAXN 800007
using namespace std;

int m,power,n,sz,curr,root;
int a[MAXN],s;
int lt[MAXN],rt[MAXN];
vector<int> from,to,c,w[MAXN];

int rev(int x){
    int res=0;
    for(int i=1;i<power;i*=2){
        res*=2; res+=x%2; 
        x/=2;
    }
    return res;
}

void build(int v,int l,int r,int num,int id){
    if(l+1==r){
        num*=2;
        if(rev(num)<sz-1)lt[v]=w[id][rev(num)];
        else if(rev(num)==power-1)lt[v]=w[id].back();
        else lt[v]=-root;

        num++;
        if(rev(num)<sz-1)rt[v]=w[id][rev(num)];
        else if(rev(num)==power-1)rt[v]=w[id].back();
        else rt[v]=-root;

    }else{
        int tt=(l+r)/2;
        curr++; lt[v]=-curr;
        build(curr,l,tt,2*num,id);
        curr++; rt[v]=-curr;
        build(curr,tt+1,r,2*num+1,id);
    }
}

void create_circuit(int M, vector<int> A){
    m=M; n=int(A.size());

    for(int i=0;i<n;i++){
        a[i]=A[i];
    }

    for(int i=0;i<n;i++){
        w[a[i]].push_back(a[i+1]);
    }

    for(int i=0;i<=m;i++)c.push_back(-1);
    c[0]=a[0];

    for(int i=1;i<=m;i++){
        if(w[i].empty())continue;

        if(w[i].size()==1){
            c[i]=w[i][0]; continue;
        }

        sz=w[i].size(); power=1;
        while(power<sz)power*=2;

        curr++; root=curr; c[i]=-root;
        build(curr,0,power-1,0,i);
    }

    for(int i=1;i<=curr;i++){
        from.push_back(lt[i]);
        to.push_back(rt[i]);
    }

    answer(c,from,to);
}

/*
int main(){
     create_circuit(4, {1,2,1,3});
}
*/




# Verdict Execution time Memory Grader output
1 Correct 9 ms 19028 KB Output is correct
2 Incorrect 29 ms 23216 KB wrong serial number
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 9 ms 19028 KB Output is correct
2 Incorrect 29 ms 23216 KB wrong serial number
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 9 ms 19028 KB Output is correct
2 Incorrect 29 ms 23216 KB wrong serial number
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 9 ms 19104 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Partially correct 9 ms 19080 KB Output is partially correct
2 Correct 47 ms 26480 KB Output is correct
3 Partially correct 88 ms 30556 KB Output is partially correct
4 Partially correct 78 ms 31540 KB Output is partially correct
# Verdict Execution time Memory Grader output
1 Partially correct 9 ms 19080 KB Output is partially correct
2 Correct 47 ms 26480 KB Output is correct
3 Partially correct 88 ms 30556 KB Output is partially correct
4 Partially correct 78 ms 31540 KB Output is partially correct
5 Partially correct 89 ms 35060 KB Output is partially correct
6 Partially correct 93 ms 36676 KB Output is partially correct
7 Partially correct 93 ms 36192 KB Output is partially correct
8 Partially correct 100 ms 37532 KB Output is partially correct
9 Partially correct 70 ms 31492 KB Output is partially correct
10 Partially correct 100 ms 38012 KB Output is partially correct
11 Partially correct 98 ms 38544 KB Output is partially correct
12 Partially correct 68 ms 31972 KB Output is partially correct
13 Partially correct 76 ms 30832 KB Output is partially correct
14 Partially correct 61 ms 30424 KB Output is partially correct
15 Partially correct 59 ms 29800 KB Output is partially correct
16 Partially correct 11 ms 19368 KB Output is partially correct
17 Partially correct 68 ms 29312 KB Output is partially correct
18 Partially correct 55 ms 29352 KB Output is partially correct
19 Partially correct 58 ms 30060 KB Output is partially correct
20 Partially correct 80 ms 32964 KB Output is partially correct
21 Partially correct 87 ms 35896 KB Output is partially correct
22 Partially correct 74 ms 32144 KB Output is partially correct