| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1319748 | aaaaaaaa | Hidden Sequence (info1cup18_hidden) | C++20 | 2 ms | 444 KiB |
#include<bits/stdc++.h>
#include "grader.h"
using namespace std;
vector < int > findSequence (int N)
{
vector < int > answer (N, 0);
auto ask = [&](string str) -> int {
vector<int> check;
for(auto it : str) check.push_back(it - '0');
bool ok = isSubsequence(check);
if(ok){
if((int) check.size() == N) {
answer = check;
return 2;
}
return 1;
}
return 0;
};
int st = 1, en = N, ones = 0;
while(st <= en){
int mid = st + (en - st) / 2;
string all_ones(mid, '1');
int res = ask(all_ones);
if(res == 0) {
en = mid - 1;
}else if(res == 2){
return answer;
}else{
ones = mid;
st = mid + 1;
}
}
int zeros = N - ones;
if(ones < zeros){
string ans(ones, '1');
for(int i = 0, j = 0; i <= (int) ans.size(); ++i, ++j){
string nans = ans;
nans.insert(nans.begin() + j, '0');
int res = ask(nans);
if(res == 2) {
return answer;
}
if(res == 1){
--i;
ans = nans;
}
}
}else{
string ans(zeros, '0');
for(int i = 0, j = 0; i <= (int) ans.size(); ++i, ++j){
string nans = ans;
nans.insert(nans.begin() + j, '1');
int res = ask(nans);
if(res == 2) {
return answer;
}
if(res == 1){
--i;
ans = nans;
}
}
}
return {-1};
}
Compilation message (stderr)
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
