Submission #402367

#TimeUsernameProblemLanguageResultExecution timeMemory
402367AlmaMartian DNA (IOI16_dna)C++17
0 / 100
1099 ms204 KiB
#include <bits/stdc++.h>
#include "dna.h"
using namespace std;

string analyse(int n, int t) {
    string p = "";
    int max_0 = 0, max_1 = 0;

    int lo = 0, mid, hi = n;
    while (lo <= hi) {
        mid = (lo + hi) / 2;
        p = '0' * mid;
        if (make_test(p)) {
            lo = max_0 = mid;
        } else {
            hi = mid;
        }
    }
    lo = 0; hi = n;
    while (lo <= hi) {
        mid = (lo + hi) / 2;
        p = '1' * mid;
        if (make_test(p)) {
            lo = max_1 = mid;
        } else {
            hi = mid;
        }
    }


    bool zero, one;
    int num_0 = 0, num_1 = 0;
    p = "";
    while ((int)p.size() < n) {
        if (num_0 < max_0) zero = make_test(p + '0');
        if (num_0 < max_0 && zero) {
            p += '0';
            num_0++; num_1 = 0;
            continue;
        }
        if (num_1 < max_1) one = make_test(p + '1');
        if (num_1 < max_1 && one) {
            p += '1';
            num_1++; num_0 = 0;
            continue;
        }
        break;
    }
    if ((int)p.size() == n) return p;
    while ((int)p.size() < n) {
        zero = make_test('0' + p);
        if (zero) {
            p = '0' + p;
            continue;
        }
        p = '1' + p;
    }
    return p;
}

Compilation message (stderr)

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()) {
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...