Submission #28084

#TimeUsernameProblemLanguageResultExecution timeMemory
28084abcdef6199Martian DNA (IOI16_dna)C++98
100 / 100
13 ms2024 KiB
#include "dna.h" #include <bits/stdc++.h> using namespace std; struct Random { int mul, add, mod, cur; Random() { mul = 1234567891; add = 126126727; mod = 1281231167; cur = 0; } int NextRand(int n) { cur = ((long long) cur * mul + add) % mod; return cur % n; } } Random; string analyse(int n, int t) { string ans = ""; int cur = 0; for (int i = 1; i <= n; ++i) { int x = Random.NextRand(2); if (make_test(ans + char(x + 48))) { ans += char(x + 48); cur = 0; } else { ans += char(1 - x + 48); cur++; } if (cur == 19) break; } int l = (int) ans.size() - cur + 1, r = (int) ans.size(), f = (int) ans.size() - cur; while (l <= r) { int mid = (l + r) >> 1; if (make_test(ans.substr(0, mid))) { f = mid; l = mid + 1; } else r = mid - 1; } ans = ans.substr(0, f); while (ans.size() < n) { if (make_test("0" + ans)) ans = "0" + ans; else ans = "1" + ans; } return ans; }

Compilation message (stderr)

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