제출 #108387

#제출 시각아이디문제언어결과실행 시간메모리
108387PeppaPigMartian DNA (IOI16_dna)C++14
100 / 100
18 ms432 KiB
#include "dna.h"
#include <bits/stdc++.h>

using namespace std;

string analyse(int n, int t) {
    int l = 0, r = n;
    while(l < r) {
        int m = (l + r + 1) >> 1;
        if(make_test(string(m, '0'))) l = m;
        else r = m-1;
    }

    string ret(l, '0');
    auto zero = [&](string a) {
        int ret = 0;
        while(a.back() == '0') ++ret, a.pop_back(); 
        return ret;
    };
    while(zero(ret) <= l) {
        if(make_test(ret + '1')) ret += '1';
        else ret += '0';
    }

    l = 0, r = n;
    while(l < r) {
        int m = (l + r + 1) >> 1;
        if(make_test(ret.substr(0, m))) l = m;
        else r = m-1;
    }
    ret = ret.substr(0, l);
    while(ret.length() != n) {
        if(make_test('1' + ret)) ret = '1' + ret;
        else ret = '0' + ret;
    }
    return ret;
}

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

dna.cpp: In function 'std::__cxx11::string analyse(int, int)':
dna.cpp:32:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     while(ret.length() != 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...