Submission #1244746

#TimeUsernameProblemLanguageResultExecution timeMemory
1244746jeroenodbMechanical Doll (IOI18_doll)C++20
0 / 100
0 ms324 KiB
#include "doll.h"
#include "bits/stdc++.h"
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef vector<vi> vvi;

void create_circuit(int M, std::vector<int> A) {
    int n = A.size();
    int m = M;
    vi c(m + 1);
    c[0] = -1;
    vvi nxt(m+1);
    for(int i=0;i+1<n;++i) {
        nxt[A[i]].push_back(A[i+1]);
    }
    nxt[A.back()].push_back(0);
    nxt[0].push_back(A[0]);
    auto id0 = [&](int at) {
        return -(at+1);
    };
    int at = 0;
    vi x,y;
    auto nwnode = [&]() {
        x.push_back(-1);
        y.push_back(-1);
        return at++;
    };
    auto buildseg = [&](int my, vi to) {
        if(size(to)==0) {
            c[my]=0;
            return;
        }else if(size(to)==1) {
            c[my]=to[0];
            return;
        }else  if(size(to)==2) {
            int sw = nwnode();
            c[my]=id0(sw);
            x[sw]=to[0];
            y[sw]=to[1];

        } else assert(false);
        
    };
    for(int i=0;i<n;++i) {
        buildseg(i,nxt[i]);
    }
    answer(c,x,y);

  
}
#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...