Submission #417894

#TimeUsernameProblemLanguageResultExecution timeMemory
417894Runtime_error_Martian DNA (IOI16_dna)C++14
100 / 100
14 ms380 KiB

#include "dna.h"
#include <bits/stdc++.h>
#define mid (l+r)/2
using namespace std;

string Gen(char s,int sz){
    string ret = "";
    while(sz--)
        ret += s;
    return ret;
}

string analyse(int n, int t) {

    int l = 0,r = n+1;
    while(r-l>1){
        if(make_test(Gen('0',mid)))
            l = mid;
        else
            r = mid;
    }
    int Max0 = l,wrong = Max0;
    string cur = Gen('0',Max0);
    while(wrong <= Max0){
        if(make_test(cur + '1'))
            wrong = 0,cur += '1';
        else
            wrong++,cur += '0';
    }
    l = 0,r = wrong;
    while(r-l>1){
        if( make_test(cur.substr(0,cur.size()-wrong+mid)) )
            l = mid;
        else
            r = mid;
    }
    cur = cur.substr(0,cur.size()-wrong+l);
    while(cur.size() < n){
        if(make_test('1' + cur))
            cur = '1' + cur;
        else
            cur = '0' + cur;
    }
    return cur;
}

Compilation message (stderr)

dna.cpp: In function 'std::string analyse(int, int)':
dna.cpp:39:22: warning: comparison of integer expressions of different signedness: 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   39 |     while(cur.size() < n){
      |           ~~~~~~~~~~~^~~
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...