답안 #315407

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
315407 2020-10-22T21:11:46 Z Ahmad_Hasan Poklon (COCI17_poklon7) C++17
84 / 120
1000 ms 47224 KB
#include <bits/stdc++.h>

using namespace std;

vector<pair<long long,long long> >vps;
int cntdpth=1;

string maxx(string b1,string b2){
    if(b1.size()>b2.size())
        return b1;
    if(b1.size()<b2.size())
        return b2;
    for(int i=0;i<b1.size();i++){
        if(b1[i]>b2[i])
        return b1;
        if(b1[i]<b2[i])
        return b2;
    }
    return b1;
}

string trg;
string slvmx(int cr=0,int dpth=1){
    cntdpth=max(cntdpth,dpth);
    string mx="0";
    if(vps[cr].first<0){
        string binary = std::bitset<32>(vps[cr].first*-1ll).to_string(); //"00000000000000000000000010000000"
        binary.erase(0, binary.find_first_not_of('0')); //"10000000"
        mx=maxx(mx,binary);
    }else{
        string ret=slvmx(vps[cr].first-1,dpth+1);
        ret+='0';
        mx=maxx(mx,ret);
    }
    if(vps[cr].second<0){
        string binary = std::bitset<32>(vps[cr].second*-1ll).to_string(); //"00000000000000000000000010000000"
        binary.erase(0, binary.find_first_not_of('0')); //"10000000"
        mx=maxx(mx,binary);
    }else{
        string ret=slvmx(vps[cr].second-1,dpth+1);
        ret+='0';
        mx=maxx(mx,ret);
    }
    return mx;
}

int main()
{
    int n;
    cin>>n;
    vps=vector<pair<long long,long long> >(n);
    for(int i=0;i<n;i++){
        long long x,y;
        cin>>x>>y;
        vps[i]={x,y};
    }
    trg=slvmx();
    trg+='0';
    int f=0;
    int i=trg.size()-1;
    for(;i>trg.size()-1-cntdpth;i--){
        if(trg[i]=='1'){
            f=1;
            trg[i]='0';
        }
    }
    while(f&&i>=0){
        if(trg[i]=='0'){
            trg[i]='1';
            break;
        }else{
            trg[i]='0';
        }
        i--;
    }



    i=0;
    for(;i<trg.size()-1&&trg[i]=='0';i++);
    for(;i<trg.size();i++)cout << trg[i];

    return 0;
}

/***
3 5 4
1 2 4 2 1
3 5 1 2 4
1 5 7 1 2

*/

Compilation message

poklon.cpp: In function 'std::string maxx(std::string, std::string)':
poklon.cpp:13:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   13 |     for(int i=0;i<b1.size();i++){
      |                 ~^~~~~~~~~~
poklon.cpp: In function 'int main()':
poklon.cpp:61:11: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   61 |     for(;i>trg.size()-1-cntdpth;i--){
      |          ~^~~~~~~~~~~~~~~~~~~~~
poklon.cpp:80:11: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   80 |     for(;i<trg.size()-1&&trg[i]=='0';i++);
      |          ~^~~~~~~~~~~~~
poklon.cpp:81:11: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   81 |     for(;i<trg.size();i++)cout << trg[i];
      |          ~^~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 256 KB Output is correct
2 Correct 0 ms 256 KB Output is correct
3 Correct 1 ms 256 KB Output is correct
4 Correct 0 ms 256 KB Output is correct
5 Incorrect 0 ms 256 KB Output isn't correct
6 Correct 1 ms 384 KB Output is correct
7 Correct 1 ms 256 KB Output is correct
8 Correct 1 ms 256 KB Output is correct
9 Correct 1 ms 384 KB Output is correct
10 Correct 2 ms 384 KB Output is correct
11 Correct 23 ms 2048 KB Output is correct
12 Correct 27 ms 1664 KB Output is correct
13 Correct 146 ms 9344 KB Output is correct
14 Correct 416 ms 19268 KB Output is correct
15 Correct 213 ms 2040 KB Output is correct
16 Execution timed out 1095 ms 47224 KB Time limit exceeded
17 Execution timed out 1092 ms 13176 KB Time limit exceeded
18 Execution timed out 1071 ms 12800 KB Time limit exceeded
19 Execution timed out 1093 ms 16000 KB Time limit exceeded
20 Execution timed out 1089 ms 16000 KB Time limit exceeded