Submission #1148379

#TimeUsernameProblemLanguageResultExecution timeMemory
1148379Kaztaev_AlisherMechanical Doll (IOI18_doll)C++20
2 / 100
39 ms13888 KiB
#include "doll.h" #include <bits/stdc++.h> #define ios ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0) #define file(s) if (fopen(s".in", "r")) freopen(s".in", "r", stdin), freopen(s".out", "w", stdout) #define all(a) a.begin() , a.end() #define F first #define S second using namespace std; using ll = long long; const ll N = 2e5+5 , inf = 2e9 + 7; const ll INF = 1e18 , mod = 1e9+7; int cur[N]; pair<int,int> p[N]; vector<int> g[N]; void build(int v, int tl , int tr , int k , int s , int pos , int V){ if(tl == tr){ cur[v] = g[V][s]; return; } else { cur[v] = pos+v; } int tm = (tl+tr) >> 1; build(v*2,tl,tm,k+1,s+(1 << k),pos,V); build(v*2+1,tm+1,tr,k+1,s,pos,V); p[cur[v]] = {cur[v*2] , cur[v*2+1]}; } void create_circuit(int M, vector<int> a) { int N = a.size(); g[0].push_back(a[0]); for(int i = 0; i+1 < a.size(); i++) g[a[i]].push_back(a[i+1]); g[a.back()].push_back(0); int nw = 0; vector<int> C(M + 1); vector<int> X(N), Y(N); for(int i = 0; i <= M; i++){ if(g[i].size() == 0){ C[i] = 0; } else if(g[i].size() == 1){ C[i] = g[i][0]; } else { C[i] = nw; build(1,1,g[i].size(),0,0,nw,i); nw += g[i].size(); nw--; } } for(int i = 1; i <= nw; i++){ X.push_back(p[i].F); Y.push_back(p[i].S); } 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...