Submission #527973

#TimeUsernameProblemLanguageResultExecution timeMemory
527973tabrMartian DNA (IOI16_dna)C++17
100 / 100
12 ms384 KiB
#include <bits/stdc++.h> using namespace std; #ifdef tabr #include "library/debug.cpp" #else #define debug(...) #endif #ifdef tabr function<bool(string)> make_test; #else #include "dna.h" #endif mt19937 rng((unsigned int) chrono::steady_clock::now().time_since_epoch().count()); int rand_int(int a, int b) { // [a, b] return uniform_int_distribution<int>(a, b)(rng); } string analyse(int n, int) { string ans; int lst = 0; for (int i = 0; i < n; i++) { int x = rand_int(0, 1); string c = to_string(x); if (make_test(ans + c)) { lst = i + 1; } else { x ^= 1; } ans += to_string(x); if (lst + 15 < i || i == n - 1) { if (make_test(ans)) { lst = i + 1; continue; } debug(ans); int low = lst; int high = (int) ans.size(); while (high - low > 1) { int mid = (high + low) >> 1; if (make_test(ans.substr(0, mid))) { low = mid; } else { high = mid; } } ans.resize(low); debug(ans); break; } } for (int i = (int) ans.size(); i < n; i++) { int x = rand_int(0, 1); string c = to_string(x); if (!make_test(c + ans)) { x ^= 1; } ans = to_string(x) + ans; } return ans; } #ifdef tabr int main() { ios::sync_with_stdio(false); cin.tie(0); string s; cin >> s; make_test = [&](string p) { if (p.size() > s.size()) { return false; } for (int i = 0; i <= (int) (s.size() - p.size()); i++) { if (p == s.substr(i, p.size())) { return true; } } return false; }; cout << analyse((int) s.size(), 0) << '\n'; return 0; } #endif

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