Submission #823203

#TimeUsernameProblemLanguageResultExecution timeMemory
823203TrumlingMechanical Doll (IOI18_doll)C++14
16 / 100
63 ms12396 KiB
#include "doll.h"
#include<bits/stdc++.h>
using namespace  std;
#define F first 
#define S second 
#define all(x) x.begin(),x.end()  
typedef long long ll;
#define INF 99999999999999
#define pb  push_back

void create_circuit(int M, std::vector<int> A) {
  int N = A.size();
  A.pb(0);

  vector<int> C(M + 1);
  vector<vector<int>>vis(M+1);
  vector<int>sw(M+1,0);
  ll idx=0;

  vector<int> X, Y;
  C[0]=A[0];
  for(int i=0;i<N;i++)
    vis[A[i]].pb(i);
  
  for(int i=1;i<=M;i++)
    {
        
        if(!vis[i].size())
            continue;

        if(vis[i].size()==1)
        {
            C[i]=A[vis[i][0]+1]; 
            continue;
        }

        if(vis[i].size()==2)
        {
            C[i]=-(idx+1);
            X.pb(A[vis[i][0]+1]);
            Y.pb(A[vis[i][1]+1]);
            idx++;
            continue;
        }

        if(vis[i].size()==3)
        {
            C[i]=-(idx+1);
            X.pb(-(idx+2));
            Y.pb(-(idx+3));

            X.pb(A[vis[i][0]+1]);
            Y.pb(-(idx+1));

            X.pb(A[vis[i][1]+1]);
            Y.pb(A[vis[i][2]+1]);
            idx+=3;
            continue;
        }

            C[i]=-(idx+1);
            X.pb(-(idx+2));
            Y.pb(-(idx+3));

            X.pb(A[vis[i][0]+1]);
            Y.pb(A[vis[i][2]+1]);

            X.pb(A[vis[i][1]+1]);
            Y.pb(A[vis[i][3]+1]);
            idx+=3;
    }

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