Submission #1199215

#TimeUsernameProblemLanguageResultExecution timeMemory
1199215ach00Mechanical Doll (IOI18_doll)C++20
16 / 100
49 ms11192 KiB
#include "doll.h"
#include <bits/stdc++.h>
using namespace std;

void create_circuit(int M, vector<int> A) {
    vector<vector<int>> next(M+1);
    int n = A.size();
    for(int i = 0; i < n-1; i++) {
        next[A[i]].push_back(A[i+1]);
    }
    next[A[n-1]].push_back(0);
    int ns = -1;
    vector<int> C(M+1);
    C[0] = A[0];
    vector<int> X;
    vector<int> Y;
    for(int k = 1; k <= M; k++) {
        if(next[k].size() == 4) {
            int r1,r2,r3;
            C[k] = r1 = ns; ns--;
            r2 = ns; ns--;
            X.push_back(r2); 
            r3 = ns; ns--;
            Y.push_back(r3);
            X.push_back(next[k][0]);
            Y.push_back(next[k][2]);
            X.push_back(next[k][1]);
            Y.push_back(next[k][3]);
        } else if(next[k].size() == 3) {
            int r1,r2,r3;
            C[k] = r1 = ns; ns--;
            r2 = ns; ns--;
            X.push_back(r2); 
            r3 = ns; ns--;
            Y.push_back(r3);
            X.push_back(next[k][0]);
            Y.push_back(r1);
            X.push_back(next[k][1]);
            Y.push_back(next[k][2]);
        } else if(next[k].size() == 2) {
            C[k] = ns; ns--;
            X.push_back(next[k][0]);
            Y.push_back(next[k][1]);
        } else if(next[k].size() == 1) {
            C[k] = next[k][0];
        }
    }
    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...