Submission #577897

#TimeUsernameProblemLanguageResultExecution timeMemory
577897NintsiChkhaidzePoklon (COCI17_poklon7)C++14
96 / 120
659 ms262144 KiB
#include <bits/stdc++.h>
//#include <vector>
//#include <iostream>
#define int long long
#define ll long long
#define pb push_back
#define s second
#define f first

using namespace std;
const int N = 1000005;
int a[N],b[N];
vector <int> l[N],r[N];

vector <int> comp(vector <int> a,vector <int> b){
    if (a.size() > b.size()) return a;
    if (a.size() < b.size()) return b;

    for (int i=0;i<a.size();i++){
        if (a[i] > b[i]) return a;
        if (a[i] < b[i]) return b;
    }
    return a;
}
vector <int> dfs(int x){
    vector<int> mx;
    if (a[x] < 0 && b[x] < 0) {
        if ((-a[x]) > (-b[x])) mx = l[x];
        else mx=r[x];
    }else if (a[x] < 0){
        mx = comp(l[x],dfs(b[x]));
    }else if (b[x]<0){
        mx = comp(r[x],dfs(a[x]));
    }else{
        mx= comp(dfs(a[x]),dfs(b[x]));
    }
    mx.pb(0);
    return mx;
}
signed main() {
    ios_base::sync_with_stdio(0),cin.tie(NULL),cout.tie(NULL);
    int n;
    cin>>n;

    for(int i = 1; i <= n; i++)
        cin>>a[i]>>b[i];
    for(int i = 1; i <= n; i++){
        if(a[i]<0){
            bool z=0;
            for (int j=30;j>=0;j--){
                if((1LL<<j)&(-a[i])) l[i].pb(1),z=1;
                else if (z) l[i].pb(0);
            }
        }
        if(b[i]<0){
            bool z=0;
            for (int j=30;j>=0;j--){
                if((1LL<<j)&(-b[i])) r[i].pb(1),z=1;
                else if (z) r[i].pb(0);
            }
        }
    }
    vector<int> res = dfs(1);
    bool z=0;
    for (int i=0;i<res.size();i++){
        if (res[i] == 1) z=1;
        if (z) cout<<res[i];
    }
}

Compilation message (stderr)

poklon.cpp: In function 'std::vector<long long int> comp(std::vector<long long int>, std::vector<long long int>)':
poklon.cpp:19:19: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   19 |     for (int i=0;i<a.size();i++){
      |                  ~^~~~~~~~~
poklon.cpp: In function 'int main()':
poklon.cpp:65:19: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   65 |     for (int i=0;i<res.size();i++){
      |                  ~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...