| # | Time | Username | Problem | Language | Result | Execution time | Memory | 
|---|---|---|---|---|---|---|---|
| 293047 | Leonardo16 | Split the Attractions (IOI19_split) | C++14 | 0 ms | 0 KiB | 
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
///   Code by Leonardo16
/// “Your focus determines your reality.” – Qui-Gon Jinn
#include<bits/stdc++.h>
using namespace std;
#pragma GCC optimize("Ofast","unroll-loops","omit-frame-pointer","inline")
//#pragma GCC option("arch=native","tune=native","no-zero-upper")
//#pragma GCC target("avx2")
//#define int  long long
#define ll long long
#define sz size
#define ull unsigned long long
#define ld long double
#define ii pair<int,int>
#define fst first
#define scd second
#define vi vector<int>
#define vii vector<ii>
#define pb push_back
#define pf push_front
#define fl '\n'
#define el endl
#define all(x) x.begin() , x.end()
#define rall(x) x.rbegin() , x.rend()
/// Functions
#define db(x) cerr << #x << ": " << (x) << '\n';
#define random() __builtin_ia32_rdtsc()
#define lg2(x) 31-__builtin_clz(x)
#define lg2ll(x) 63-__builtin_clzll(x)
#define pi acos(-1)
#define YN(x) cout<<((x)?("YES"):("NO"))<<fl;
#define yn(x) cout<<((x)?("Yes"):("No"))<<fl;
#define des(x,s1,s2,end1,end2) cout<<((x)?(s1):(s2))<<fl;if(x){end1;}else{end2;}
#define precision(x) cout.setf(ios::fixed);cout.precision(x);
/// Red-Black Tree Template
//#include <ext/pb_ds/assoc_container.hpp>
//#include <ext/pb_ds/tree_policy.hpp>
//using namespace __gnu_pbds;
//typedef tree < long long ,  null_type ,  less<long long> ,  rb_tree_tag ,  tree_order_statistics_node_update > ordered_set;
//#define less_than(n) order_of_key(n)
//#define en_pos(n) find_by_order(n)
/// Prime numbers  173,179,311,331,737,1009,2011,2027,3079,4001,100003
///=====================================================================
vi g[200005];
vector<int>v;
bool mk[200005];
int n,a,b,c;
void dfs(int u){
    if(v.sz()<b)v.pb(u);
    else return;
    mk[u]=true;
    for(auto v:g[u]){
        if(mk[v])continue;
        dfs(v);
    }
}
int* find_split(int nn,int aa,int bb,int cc,int p[],int q[]){
    n=nn;a=aa;b=bb;c=cc;
    static int sol[200005];
    for(int i=0;i<n;i++){
        sol[i]=0;
    }
    for(int i=0;i<=sizeof(p);i++){
        g[p[i]].pb(q[i]);
        g[q[i]].pb(p[i]);
    }
    dfs(0);
    for(auto it:v){
        sol[it]=2;
    }
    for(int i=0;i<n;i++){
        if(sol[i]==0){
            sol[i]=1;
            break;
        }
    }
    for(int i=0;i<n;i++){
        if(sol[i]==0){
            sol[i]=3;
        }
    }
    return sol;
}
main(){
    ios_base::sync_with_stdio(0);cin.tie(0);
//    int p[]= {0, 0, 0, 0, 0, 0, 1, 3, 4, 5};
//    int q[]= {1, 2, 3, 4, 6, 8, 7, 7, 5, 6};
//
//    int *sol=find_split(9, 1, 4, 3,p,q);
//    for(int i=0;i<n;i++){
//        cout<<*(sol+i)<<" ";
//    }
}
