This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |