제출 #33863

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

using namespace std;

string add(string s, int len, char ch){
    while(s.size()<len) s += ch;
    return s;
}

string analyse(int n, int t){
    string res = "";
    int l = 1, r = n, mid;
    int cur = 0;
    while(l<=r){
        mid = (l+r)>>1;
        if(make_test(add("",mid,'1'))){
            cur = mid;
            l = mid+1;
        }
        else r = mid-1;
    }
    res = add("",cur,'1');
    string tmp = res;
    int cnt = 0;
    while(tmp.size()<n){
        if(make_test(tmp+"0")){
            tmp += "0";
            cnt = 0;
        }
        else{
            tmp += "1";
            cnt++;
        }
        if(cnt>cur) break;
    }
    l = tmp.size()-cnt+1; r = tmp.size();
    int suf = tmp.size()-cnt;
    while(l<=r){
        mid = (l+r)>>1;
        string s = "";
        for(int i = 0; i < mid; i++){
            s += tmp[i];
        }
        if(make_test(s)){
            suf = mid;
            l = mid+1;
        }
        else r = mid-1;
    }
    res = "";
    for(int i = 0; i < suf; i++) res += tmp[i];
    while(res.size()<n){
        if(make_test("0"+res)) res = "0"+res;
        else res = "1"+res;
    }
    return res;
}

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

dna.cpp: In function 'std::__cxx11::string add(std::__cxx11::string, int, char)':
dna.cpp:7:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     while(s.size()<len) s += ch;
                   ^
dna.cpp: In function 'std::__cxx11::string analyse(int, int)':
dna.cpp:26:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     while(tmp.size()<n){
                     ^
dna.cpp:53:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     while(res.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...