답안 #1000012

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1000012 2024-06-16T13:00:54 Z esomer Martian DNA (IOI16_dna) C++17
100 / 100
7 ms 444 KB
#include <bits/stdc++.h>

using namespace std;

bool make_test(string T);

string buildZeros(int zeros){
    string s = "";
    for(int i = 0; i < zeros; i++) s += '0';
    return s;
}

string analyse(int N, int maxT) {
    int maxZeroes = 0;
    int lo = 1;
    int hi = N;
    while(lo <= hi){
        int mid = (lo + hi) / 2;
        string s = buildZeros(mid);
        if(make_test(s)){
            maxZeroes = mid;
            lo = mid + 1;
        }else hi = mid - 1;
    }
    string suf = buildZeros(maxZeroes);
    int t = 0;
    while(t <= maxZeroes){
        suf += '1';
        if(!make_test(suf)){
            t++;
            suf.pop_back();
            suf += '0';
        }else t = 0;
    }
    //I binary search to find exactly the suffix.
    lo = 1;
    hi = maxZeroes+1; //How many do I erase.
    string nwSuf = suf;
    while(lo <= hi){
        int mid = (lo + hi) / 2;
        string s = suf;
        for(int i = 0; i < mid; i++) s.pop_back();
        if(make_test(s)){
            //This is suffix. I can erase less.
            nwSuf = s;
            hi = mid - 1;
        }else lo = mid + 1;
    }
    suf = nwSuf;
    //Now suf is exactly the suffix.
    while((int)suf.size() < N){
        reverse(suf.begin(), suf.end());
        suf += '1';
        reverse(suf.begin(), suf.end());
        if(!make_test(suf)){
            reverse(suf.begin(), suf.end());
            suf.pop_back();
            suf += '0';
            reverse(suf.begin(), suf.end());
        }
    }
    return suf;
}

Compilation message

grader.cpp: In function 'bool make_test(std::string)':
grader.cpp:14:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   14 |  for (int i = 0; i < p.size(); i++) {
      |                  ~~^~~~~~~~~~
grader.cpp:23:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   23 |  for (int i = 1; i <= ss.size(); i++) {
      |                  ~~^~~~~~~~~~~~
grader.cpp:28:13: warning: comparison of integer expressions of different signedness: '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type' {aka 'int'} and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   28 |   if (pr[i] == p.size()) {
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 1 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 0 ms 344 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
17 Correct 0 ms 348 KB Output is correct
18 Correct 0 ms 344 KB Output is correct
19 Correct 1 ms 348 KB Output is correct
20 Correct 0 ms 348 KB Output is correct
21 Correct 0 ms 348 KB Output is correct
22 Correct 0 ms 348 KB Output is correct
23 Correct 0 ms 348 KB Output is correct
24 Correct 0 ms 344 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 444 KB Output is correct
8 Correct 1 ms 348 KB Output is correct
9 Correct 1 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 0 ms 360 KB Output is correct
17 Correct 0 ms 348 KB Output is correct
18 Correct 1 ms 348 KB Output is correct
19 Correct 1 ms 348 KB Output is correct
20 Correct 1 ms 360 KB Output is correct
21 Correct 1 ms 348 KB Output is correct
22 Correct 0 ms 348 KB Output is correct
23 Correct 0 ms 348 KB Output is correct
24 Correct 0 ms 348 KB Output is correct
25 Correct 0 ms 348 KB Output is correct
26 Correct 0 ms 348 KB Output is correct
27 Correct 0 ms 344 KB Output is correct
28 Correct 0 ms 348 KB Output is correct
29 Correct 0 ms 348 KB Output is correct
30 Correct 0 ms 344 KB Output is correct
31 Correct 0 ms 348 KB Output is correct
32 Correct 0 ms 348 KB Output is correct
33 Correct 0 ms 348 KB Output is correct
34 Correct 1 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 344 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 0 ms 344 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 432 KB Output is correct
11 Correct 0 ms 432 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
17 Correct 0 ms 348 KB Output is correct
18 Correct 1 ms 348 KB Output is correct
19 Correct 1 ms 348 KB Output is correct
20 Correct 0 ms 348 KB Output is correct
21 Correct 0 ms 344 KB Output is correct
22 Correct 4 ms 348 KB Output is correct
23 Correct 7 ms 348 KB Output is correct
24 Correct 5 ms 348 KB Output is correct
25 Correct 7 ms 344 KB Output is correct
26 Correct 7 ms 348 KB Output is correct
27 Correct 3 ms 348 KB Output is correct
28 Correct 5 ms 348 KB Output is correct
29 Correct 7 ms 348 KB Output is correct
30 Correct 3 ms 348 KB Output is correct
31 Correct 3 ms 348 KB Output is correct
32 Correct 7 ms 348 KB Output is correct
33 Correct 5 ms 348 KB Output is correct
34 Correct 5 ms 348 KB Output is correct
35 Correct 4 ms 348 KB Output is correct
36 Correct 4 ms 348 KB Output is correct
37 Correct 3 ms 348 KB Output is correct
38 Correct 5 ms 348 KB Output is correct
39 Correct 5 ms 348 KB Output is correct