Submission #249036

# Submission time Handle Problem Language Result Execution time Memory
249036 2020-07-14T08:32:35 Z leaked Poklon (COCI17_poklon7) C++14
48 / 120
521 ms 209508 KB
#include<bits/stdc++.h>
using namespace std;
//#include<ext/pb_ds/assoc_container.hpp>
//#include<ext/pb_ds/tree_policy.hpp>
//
//    #pragma GCC optimize("unroll-loops")
//    #pragma GCC optimize("Ofast")
//    #pragma GCC optimize("-O3")
//    #pragma GCC optimize("no-stack-protector")
//    #pragma GCC optimize("fast-math")
//#define LOCAL
#define sim template < class c
#define ris return * this
#define dor > debug & operator <<
#define eni(x) sim > typename \
  enable_if<sizeof dud<c>(0) x 1, debug&>::type operator<<(c i) {
sim > struct rge { c b, e; };
sim > rge<c> range(c i, c j) { return rge<c>{i, j}; }
sim > auto dud(c* x) -> decltype(cout << *x, 0);
sim > char dud(...);
struct debug {
#ifndef LOCAL
~debug() { cout << endl; }
eni(!=) cout << boolalpha << i; ris; }
eni(==) ris << range(begin(i), end(i)); }
sim, class b dor(pair < b, c > d) {
  ris << "(" << d.first << ", " << d.second << ")";
}
sim dor(rge<c> d) {
  *this << "[";
  for (auto it = d.b; it != d.e; ++it)
	*this << ", " + 2 * (it == d.b) << *it;
  ris << "]";
}
#else
sim dor(const c&) { ris; }
#endif
};
#define imie(...) " [" << #__VA_ARGS__ ": " << (__VA_ARGS__) << "] "
#define fi first
#define f first
#define se second
#define s second
#define vi_a vector<int>a;
#define p_b push_back
////////////////////////////////???????????????CHECK THIS OUT???????????????//////////////////////////////
#define ll long long
////////////////////////////////???????????????CHECK THIS OUT???????????????//////////////////////////////
#define ld long double
#define pll pair<ll,ll>
#define pii pair<int,int>
#define m_p make_pair
#define fast_io cin.tie(0);cout.tie(0);ios_base::sync_with_stdio(0);
#define all(x) x.begin(),x.end()
#define getfiles    ifstream cin("input.txt");ofstream cout("output.txt");
#define pw(x) (1ll << x)
#define sz(x) (ll)x.size()
#define endl "\n"
#define rall(x) x.rbegin(),x.rend()
#define len(a) (ll)a.size()
#define rep(x,l,r) for(ll x=l;x<r;x++)

//using namespace __gnu_pbds;
ld eps = (ld)1 / 1e6;
const ld pi=3.14159265359;
ll inf = 1e18,mod1=1e9+7;
ll sqr(ll a) { return a * a; }
ll qb(ll a) { return a * a * a; }
ll gcd(ll a, ll b) { return !a ? b : gcd(b % a, a); }
void binary(ll val,int to) {for(int i=0;i<to;i++) cerr<<(pw(i) & val ? 1 : 0); cerr<<endl;}
ll binpow(ll a, ll b, ll mod) { return b ? (b % 2 ? (a * (sqr(binpow(a, b / 2, mod)) % mod)) % mod : sqr(binpow(a, b / 2, mod)) % mod) : 1; }
ll binmult(ll a, ll b, ll mod) { return b ? (b % 2 ? (2 * binmult(a, b / 2, mod) + a) % mod : (2 * binmult(a, b / 2, mod)) % mod) : 0; }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
const ll R=1e4;
const ll tx[4]={1,0,-1,0};
const ll ty[4]={0,1,0,-1};
const char rev_to[4]={'E','W','N','S'};
const char o[4]={'S','P','R'};
const int N=3e6+1;
const int M=1e9+7;
//typedef tree<ll,null_type,less<ll>,rb_tree_tag,tree_order_statistics_node_update> st;
void bad(){
    cout<<-1;
    exit(0);
}
ll mx[N];
vector<int>p(N,-1);
vector<int>g[N];
pii lol[N];
pii a[N];
ll to[N];
int n;
ll dfs(int v){
    if(!sz(g[v])){
        return mx[v];
    }
    ll mxx=-1;
    for(auto &z : g[v]){
        mxx=max(mxx,dfs(z));
    }
    mx[v]=mxx*2;
    return mx[v];
}
signed main()
{
    fast_io;
    ///TODO :
    cin>>n;
   // int a,b;
    for(int i=0;i<n;i++){
        cin>>a[i].f>>a[i].s;
        if(a[i].f>0){
            p[3*(a[i].f-1)]=3*i;
            g[3*i].p_b(3*(a[i].f-1));
        }
        else{
            p[3*i+1]=3*i;
            g[3*i].p_b(3*i+1);
            mx[3*i+1]=-a[i].f;
        }
        if(a[i].s>0){
            p[3*(a[i].s-1)]=3*i;
            g[3*i].p_b(3*(a[i].s-1));
        }
        else{
            p[3*i+2]=3*i;
            g[3*i].p_b(3*i+2);
            mx[3*i+2]=-a[i].s;
        }
    }
    int ps=-1;
    for(int i=0;i<3*n;i++){
        if(mx[i] && !sz(g[i])){
            ps=i;
            while(p[ps]!=-1){
                ps=p[ps];
            }
            break;
        }
    }
    dfs(ps);
    string s;
    bool ok=0;
    for(int i=63;i>=0;i--){
        if(pw(i) & mx[ps]){
            ok=1;
            cout<<1;
        }
        else{
            if(ok) cout<<0;
        }
    }
    return 0;
}
/*
*/
# Verdict Execution time Memory Grader output
1 Correct 46 ms 82552 KB Output is correct
2 Correct 53 ms 82552 KB Output is correct
3 Correct 46 ms 82552 KB Output is correct
4 Correct 45 ms 82560 KB Output is correct
5 Correct 51 ms 82808 KB Output is correct
6 Correct 46 ms 82552 KB Output is correct
7 Correct 45 ms 82556 KB Output is correct
8 Correct 45 ms 82552 KB Output is correct
9 Incorrect 50 ms 82552 KB Output isn't correct
10 Incorrect 45 ms 82680 KB Output isn't correct
11 Incorrect 56 ms 83576 KB Output isn't correct
12 Incorrect 51 ms 83704 KB Output isn't correct
13 Incorrect 66 ms 87672 KB Output isn't correct
14 Incorrect 89 ms 92792 KB Output isn't correct
15 Incorrect 90 ms 90488 KB Output isn't correct
16 Incorrect 207 ms 115492 KB Output isn't correct
17 Incorrect 423 ms 157876 KB Output isn't correct
18 Incorrect 423 ms 160836 KB Output isn't correct
19 Incorrect 521 ms 170740 KB Output isn't correct
20 Incorrect 486 ms 209508 KB Output isn't correct