# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
47203 | 2018-04-29T05:09:05 Z | Kmcode | Hidden Sequence (info1cup18_hidden) | C++14 | 0 ms | 0 KB |
vector<int> calc(vector<int> v, int add,int lim,int n) { vector<pair<int, int> > vv; vector<int> v1; for (int i = v.size(); i >= 0; i--) { vector<int> tmp; tmp = v; int z = 0; while (1) { tmp.insert(tmp.begin() + tmp.size() - i, add); if (tmp.size() > lim) { tmp.pop_back(); break; } if (isSubsequence(tmp)) { } else { tmp.pop_back(); break; } z++; } v1.push_back(z); } int sum = n-v.size(); for (int el : v1) { sum -= el; } int id = max_element(v1.begin(), v1.end()) - v1.begin(); v1[id] += sum; int z = v.size(); for (int i = z; i >= 0; i--) { while (v1[z - i]--) { v.insert(v.begin() + v.size() - i, add); } } return v; } vector<int> findSequence(int N) { vector<int> zero; vector<int> one; for (int i = 0; i < N/2 +1; i++) { zero.push_back(0); one.push_back(1); if (isSubsequence(zero)) { } else{ zero.pop_back(); } if (!isSubsequence(one)) { one.pop_back(); } } while (zero.size() + one.size() < N) { if (zero.size() > one.size()) { zero.push_back(0); } else { one.push_back(1); } } if (one.size() > zero.size()) { return calc(zero, 1, (N) / 2 + 3, N); } else { return calc(one, 0, (N) / 2 + 3, N); } }