Submission #431513

#TimeUsernameProblemLanguageResultExecution timeMemory
431513AmineWeslatiMechanical Doll (IOI18_doll)C++14
16 / 100
132 ms12440 KiB
#include "doll.h"
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef vector<int>vi;
#define pb push_back
#define all(x) begin(x),end(x)
#define sz(v) (int)v.size()

#define FOR(i,a,b) for(int i=a; i<b; i++)
#define ROF(i,a,b) for(int i=b-1; i>=a; i--)
//------------------------------------------

int N;
void create_circuit(int M, vi a) {
    N=sz(a);

    vi adj[M+1];
    adj[0].pb(a[0]);
    FOR(i,0,N){
        if(i==N-1) adj[a[i]].pb(0);
        else adj[a[i]].pb(a[i+1]);
    }

    int cnt=0;
    vi ans(M+1),X,Y;
    FOR(i,0,M+1) if(sz(adj[i])){
        int n=sz(adj[i]);
        vi vec=adj[i];

        if(n==1){
            ans[i]=vec[0];
        }
        else if(n==2){
            cnt++;
            ans[i]=-cnt; 
            X.pb(vec[0]);
            Y.pb(vec[1]);
        }
        else if(n==3){
            cnt++;
            ans[i]=-cnt; 
            X.pb(-(cnt+1));
            Y.pb(-(cnt+2));

            X.pb(vec[0]);
            Y.pb(-cnt);

            X.pb(vec[1]);
            Y.pb(vec[2]);


            cnt+=2;
        }
        else if(n==4){
            cnt++;
            ans[i]=-cnt; 
            X.pb(-(cnt+1));
            Y.pb(-(cnt+2));

            X.pb(vec[0]);
            Y.pb(vec[2]);

            X.pb(vec[1]);
            Y.pb(vec[3]);

            cnt+=2;
        }
    }

    answer(ans,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...