Submission #724409

#TimeUsernameProblemLanguageResultExecution timeMemory
724409PixelCatSplit the Attractions (IOI19_split)C++14
7 / 100
515 ms1048576 KiB
#include "split.h" #ifdef NYAOWO #include "grader.cpp" #endif #include <bits/stdc++.h> #define For(i, a, b) for(int i = a; i <= b; i++) #define Forr(i, a, b) for(int i = a; i >= b; i--) #define F first #define S second #define eb emplace_back #define sz(x) ((int)x.size()) #define all(x) x.begin(), x.end() // #define int LL using namespace std; using LL = long long; using pii = pair<int, int>; const int MAXN = 200010; vector<int> adj[MAXN]; vector<int> ord; void dfs(int n, int p, int k) { ord.eb(n); for(auto &i:adj[n]) if(i != p && i != k) { dfs(i, n, k); } } vector<int32_t> find_split(int32_t n, int32_t a, int32_t b, int32_t c, vector<int32_t> p, vector<int32_t> q) { int m = sz(p); For(i, 0, m - 1) { int s = p[i]; int t = q[i]; adj[s].eb(t); adj[t].eb(s); } int p0 = -1; For(i, 0, n - 1) if(sz(adj[i]) == 1) { p0 = i; } if(p0 < 0) p0 = 0; dfs(p0, p0, p0); vector<int> res(n); For(i, 0, n - 1) { int id = ord[i]; if(i < a) res[id] = 1; else if(i < a + b) res[id] = 2; else res[id] = 3; } return res; }
#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...