Submission #1037707

#TimeUsernameProblemLanguageResultExecution timeMemory
1037707Mr_HusanboyMechanical Doll (IOI18_doll)C++17
16 / 100
49 ms12068 KiB
#include "doll.h"
#include <bits/stdc++.h>

using namespace std;

#define ll long long
#define ff first
#define ss second
#define all(a) (a).begin(), (a).end()

template<typename T>
int len(T &a){
  return a.size();
}

mt19937 rng(chrono::high_resolution_clock::now().time_since_epoch().count());


void create_circuit(int m, vector<int> a) {
  int n = a.size();
  vector<int> c(m + 1);
  a.push_back(0);
  c[0] = a[0];
  vector<vector<int>> pos(m + 1);
  for(int i = 0; i < n; i ++){
    pos[a[i]].push_back(i);
  }

  vector<int> x, y;
  for(int i = 1; i <= m; i ++){
    if(len(pos[i]) == 0) continue;
    if(len(pos[i]) == 1){
      c[i] = a[pos[i][0] + 1];
      continue;
    }
    if(len(pos[i]) == 2){
      x.push_back(a[pos[i][0] + 1]); y.push_back(a[pos[i][1] + 1]);
      c[i] = -len(x);
      continue;
    }
    if(len(pos[i]) == 3){
      int cur = len(x);
      c[i] = -cur - 1;
      x.push_back(-cur - 2);
      x.push_back(a[pos[i][0] + 1]);
      x.push_back(a[pos[i][1] + 1]);
      y.push_back(-cur - 3);
      y.push_back(-cur - 1);
      y.push_back(a[pos[i][2] + 1]);
    }
    if(len(pos[i]) == 4){
      int cur = len(x);
      c[i] = -cur - 1;
      x.push_back(-cur - 2);
      x.push_back(a[pos[i][0] + 1]);
      x.push_back(a[pos[i][1] + 1]);
      y.push_back(-cur - 3);
      y.push_back(a[pos[i][2] + 1]);
      y.push_back(a[pos[i][3] + 1]);
    }
  }
  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...