Submission #295990

#TimeUsernameProblemLanguageResultExecution timeMemory
295990AutoratchMechanical Doll (IOI18_doll)C++14
16 / 100
155 ms16224 KiB
#include "doll.h"
#include <bits/stdc++.h>
using namespace std;

const int N = 2e5 + 1;

int sw;
vector<int> nxt[N];
int x[N],y[N];

void create_circuit(int m,vector<int> a) 
{
    int n = a.size();
    vector<int> c(m+1);
    a.push_back(0);
    for(int i = 0;i < n;i++) nxt[a[i]].push_back(a[i+1]);
    c[0] = a[0];
    for(int i = 1;i <= m;i++) if(!nxt[i].empty())
    {
        if(nxt[i].size()==1) c[i] = nxt[i][0];
        else if(nxt[i].size()==2) 
        {
            c[i] = ++sw;
            c[i] = -c[i];
            x[sw] = nxt[i][0];
            y[sw] = nxt[i][1];
        }
        else if(nxt[i].size()==3)
        {
            int s1 = ++sw,s2 = ++sw,s3 = ++sw;
            c[i] = -s1;
            x[s1] = -s2;
            y[s1] = -s3;
            x[s2] = -s1;
            y[s2] = nxt[i][1];
            x[s3] = nxt[i][0];
            y[s3] = nxt[i][2];
        }
        else 
        {
            int s1 = ++sw,s2 = ++sw,s3 = ++sw;
            c[i] = -s1;
            x[s1] = -s2;
            y[s1] = -s3;
            x[s2] = nxt[i][0];
            y[s2] = nxt[i][2];
            x[s3] = nxt[i][1];
            y[s3] = nxt[i][3];
        }
    }
    vector<int> sx,sy;
    for(int i = 1;i <= sw;i++) sx.push_back(x[i]),sy.push_back(y[i]);
    answer(c,sx,sy);
}
#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...