Submission #1240771

#TimeUsernameProblemLanguageResultExecution timeMemory
1240771DedibeatMartian DNA (IOI16_dna)C++20
100 / 100
10 ms496 KiB
#include "dna.h" #include<bits/stdc++.h> using namespace std; int longest_zero(int n) { int l = 0, r = n + 1; while(l + 1 < r) { int mid = (l + r) / 2; if(make_test(string(mid, '0'))) l = mid; else r = mid; } return l; } string correct_suf(string suf) { int l = 0, r = suf.size() + 1; while(l + 1 < r) { int mid = (l + r) / 2; if(make_test(suf.substr(0, mid))) l = mid; else r = mid; } return suf.substr(0, l); } std::string analyse(int n, int t) { int k = longest_zero(n); if(k == 0) return string(n, '1'); string suf = string(k, '0'); //cout << suf << "\n"; int cnt = k; while(suf.size() < n && cnt <= k) { if(make_test(suf + "1")) { suf += "1"; cnt = 0; } else { suf += "0"; cnt++; } } //cout << suf << "\n"; suf = correct_suf(suf); //cout << suf << "\n"; while(suf.size() < n) { if(make_test("1" + suf)) suf = "1" + suf; else suf = "0" + suf; } return suf; }

Compilation message (stderr)

dna.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...