Submission #20590

#TimeUsernameProblemLanguageResultExecution timeMemory
20590model_codeMartian DNA (IOI16_dna)C++14
100 / 100
13 ms2024 KiB
#include "dna.h" #include <cstdlib> std::string zeroes(int m) { std::string res = ""; for (int i = 0; i < m; ++i) res += '0'; return res; } std::string analyse(int n, int t) { int l = 0, r = n + 1; while (l < r - 1) { int m = (l + r) >> 1; if (make_test(zeroes(m))) l = m; else r = m; } std::string s = zeroes(l); int zeroesCount = 0; int maxZeroesCount = l; while (true) { s += '1'; if (!make_test(s)) { s[s.size() - 1] = '0'; ++zeroesCount; } else { zeroesCount = 0; } if (zeroesCount + maxZeroesCount >= n || zeroesCount >= maxZeroesCount + 1) break; } l = 0, r = zeroesCount; s = s.substr(0, s.size() - zeroesCount); while (l < r - 1) { int m = (l + r) >> 1; if (make_test(s + zeroes(m))) l = m; else r = m; } s = s + zeroes(l); while (s.size() < n) { s = "1" + s; if (!make_test(s)) { s[0] = '0'; } } return s; }

Compilation message (stderr)

dna.cpp: In function 'std::__cxx11::string analyse(int, int)':
dna.cpp:51:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     while (s.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...