Submission #577890

#TimeUsernameProblemLanguageResultExecution timeMemory
577890NintsiChkhaidzePoklon (COCI17_poklon7)C++14
114 / 120
621 ms262144 KiB
#include <bits/stdc++.h>
//#include <vector>
//#include <iostream>
#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> bin(int x){
    vector<int> str; str.clear();
    bool z=0;
    for (int j=29;j>=0;j--){
        if((1LL<<j)&x) str.pb(1),z=1;
        else if (z) str.pb(0);
    }
    return str;
}
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) {
        mx = bin(max(-a[x],-b[x]));
    }else if (a[x] < 0){
        mx = bin(-a[x]);
        mx = comp(mx,dfs(b[x]));
    }else if (b[x]<0){
        mx = bin(-b[x]);
        mx = comp(mx,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];

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