제출 #66471

#제출 시각아이디문제언어결과실행 시간메모리
66471thiago4532Martian DNA (IOI16_dna)C++17
100 / 100
19 ms764 KiB
#include "dna.h"
#include <bits/stdc++.h>
#define zz(x) string(x, '0')

using namespace std;
int n;
string str;



int buscab(){
    int ini=0, fim=n+1, meio;
    while(fim - ini > 1){
        meio = (ini + fim) >> 1;

        string s = zz(meio);

        if(make_test(s)) ini = meio;
        else fim = meio;
    }
    return ini;
}

int buscab2(){
    int ini=0, fim=str.size(), meio;
    while(fim - ini > 1){
        meio = (ini + fim) >> 1;

        string s = str.substr(0, meio+1);

        if(make_test(s)) ini = meio;
        else fim = meio;
    }
    return ini;
}

string analyse(int k, int t){
    n = k;

    str = zz(buscab());
    int qtd = str.size();

    while(str.size() < n){
        if(make_test(str+"1")){
            str += "1";
            continue;
        }

        str += "0";
        int x=0;

        for(int i=str.size()-1;i>=0;i--){
            if(str[i] == '1') break;
            ++x;
        }
        if(x > qtd) break;
    }

    str = str.substr(0, buscab2()+1);

    while(str.size() < n){
        if(make_test("0"+str)) str = "0"+str;
        else str = "1"+str;
    }
    return str;
}

컴파일 시 표준 에러 (stderr) 메시지

dna.cpp: In function 'std::__cxx11::string analyse(int, int)':
dna.cpp:43:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     while(str.size() < n){
           ~~~~~~~~~~~^~~
dna.cpp:61:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     while(str.size() < n){
           ~~~~~~~~~~~^~~
grader.cpp: In function 'bool make_test(std::__cxx11::string)':
grader.cpp:14:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < p.size(); i++) {
                  ~~^~~~~~~~~~
grader.cpp:23:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 1; i <= ss.size(); i++) {
                  ~~^~~~~~~~~~~~
grader.cpp:28:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if (pr[i] == p.size()) {
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...