Submission #27889

#TimeUsernameProblemLanguageResultExecution timeMemory
27889abcdef6199Martian DNA (IOI16_dna)C++98
100 / 100
13 ms2024 KiB
#include "dna.h" #include <bits/stdc++.h> using namespace std; string analyse(int n, int t) { int l, r, f; l = 1; r = n; f = 0; while (l <= r) { int mid = (l + r) >> 1; if (make_test(string(mid, '0'))) { f = mid; l = mid + 1; } else r = mid - 1; } if (f == 0) return string(n, '1'); string ans(f, '0'); int cur = 0; while (1) { if (make_test(ans + "1")) { cur = 0; ans += "1"; } else { ans += "0"; cur += 1; } if (cur > l) break; } l = 1; r = (int) ans.size(); f = -1; while (l <= r) { int mid = (l + r) >> 1; if (make_test(ans.substr(0, mid))) { f = mid; l = mid + 1; } else r = mid - 1; } assert(f != -1); while ((int) ans.size() > f) ans.erase((int) ans.size() - 1); for (int i = n - (int) ans.size(); i >= 1; --i) { if (make_test("1" + ans)) ans = "1" + ans; else ans = "0" + ans; } return ans; }

Compilation message (stderr)

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...