제출 #1240771

#제출 시각아이디문제언어결과실행 시간메모리
1240771DedibeatMartian DNA (IOI16_dna)C++20
100 / 100
10 ms496 KiB
#include "dna.h"
#include<bits/stdc++.h>
using namespace std;
int longest_zero(int n)
{
    int l = 0, r = n + 1;
    while(l + 1 < r)
    {
        int mid = (l + r) / 2;
        if(make_test(string(mid, '0')))
            l = mid;
        else r = mid;
    }
    return l;
}

string correct_suf(string suf)
{
    int l = 0, r = suf.size() + 1;
    while(l + 1 < r)
    {
        int mid = (l + r) / 2;
        if(make_test(suf.substr(0, mid)))
            l = mid;
        else r = mid;
    }
    return suf.substr(0, l);
}
std::string analyse(int n, int t) {
    int k = longest_zero(n);
    if(k == 0) return string(n, '1');

    string suf = string(k, '0');
    //cout << suf << "\n";
    int cnt = k;
    while(suf.size() < n && cnt <= k)
    {
        if(make_test(suf + "1"))
        {
            suf += "1";
            cnt = 0;
        }
        else 
        {
            suf += "0";
            cnt++;
        }
    }
    //cout << suf << "\n";
    suf = correct_suf(suf);

    //cout << suf << "\n";
    while(suf.size() < n)
    {
        if(make_test("1" + suf))
            suf = "1" + suf;
        else 
            suf = "0" + suf;
    }

    return suf;
}                       

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

dna.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...