답안 #315409

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
315409 2020-10-22T21:13:02 Z Ahmad_Hasan Poklon (COCI17_poklon7) C++17
84 / 120
1000 ms 262148 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()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);      cout.tie(0);
    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:63:11: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   63 |     for(;i>trg.size()-1-cntdpth;i--){
      |          ~^~~~~~~~~~~~~~~~~~~~~
poklon.cpp:82:11: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   82 |     for(;i<trg.size()-1&&trg[i]=='0';i++);
      |          ~^~~~~~~~~~~~~
poklon.cpp:83:11: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   83 |     for(;i<trg.size();i++)cout << trg[i];
      |          ~^~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 0 ms 384 KB Output is correct
3 Correct 0 ms 384 KB Output is correct
4 Correct 1 ms 384 KB Output is correct
5 Incorrect 0 ms 384 KB Output isn't correct
6 Correct 1 ms 384 KB Output is correct
7 Correct 0 ms 384 KB Output is correct
8 Correct 1 ms 384 KB Output is correct
9 Correct 1 ms 384 KB Output is correct
10 Correct 1 ms 384 KB Output is correct
11 Correct 12 ms 2048 KB Output is correct
12 Correct 12 ms 1664 KB Output is correct
13 Correct 87 ms 9344 KB Output is correct
14 Correct 294 ms 19192 KB Output is correct
15 Correct 76 ms 1920 KB Output is correct
16 Execution timed out 1097 ms 47224 KB Time limit exceeded
17 Execution timed out 1055 ms 99064 KB Time limit exceeded
18 Execution timed out 1103 ms 113912 KB Time limit exceeded
19 Execution timed out 1102 ms 79864 KB Time limit exceeded
20 Runtime error 356 ms 262148 KB Execution killed with signal 9 (could be triggered by violating memory limits)