Submission #1174744

#TimeUsernameProblemLanguageResultExecution timeMemory
1174744PacybwoahHidden Sequence (info1cup18_hidden)C++20
100 / 100
53 ms416 KiB
#include<iostream>
#include<vector>
#include<algorithm>
#include<utility>
#include "grader.h"

using namespace std;

vector<int> findSequence(int N){
    int n = N;
    vector<int> que;
    int a, b;
    for(int i = 0; i < (n + 1) / 2; i++){
        que.push_back(0);
    }
    if(isSubsequence(que)) a = 0, b = 1;
    else a = 1, b = 0;
    vector<int>().swap(que);
    int sz = 0;
    for(int i = 0; i < n; i++){
        que.push_back(b);
        if(!isSubsequence(que)){
            sz = i;
            break;
        }
    }
    if(sz == 0) return vector<int>(n, a);
    // n - sz a, sz b
    vector<int> pre(sz + 1);
    for(int i = 1; i <= sz; i++){
        vector<int>().swap(que);
        for(int j = 1; j <= i; j++) que.push_back(b);
        int sa = 0, pa = 0;
        while((int)que.size() <= n / 2){
            que.push_back(a);
            if(!isSubsequence(que)){
                break;
            }
            else sa++;
        }
        vector<int>().swap(que);
        int cur = 0;
        while(cur + sz - i + 1 <= n / 2){
            cur++;
            vector<int>().swap(que);
            for(int j = 1; j <= cur; j++) que.push_back(a);
            for(int j = i; j <= sz; j++) que.push_back(b);
            if(!isSubsequence(que)) break;
            else pa++;
        }
        if(pa + sz - i + 1 <= n / 2) pre[i] = pa;
        else pre[i] = n - sz - sa;
    }
    int sum = sz;
    vector<int> ans;
    for(int i = sz; i > 0; i--) pre[i] = pre[i] - pre[i - 1];
    for(int i = 1; i <= sz; i++){
        for(int j = 1; j <= pre[i]; j++) ans.push_back(a);
        ans.push_back(b);
        sum += pre[i];
    }
    for(int i = 1; i <= n - sum; i++) ans.push_back(a);
    return ans;
}
// g++ -std=c++17 -Wall -Wextra -Wshadow -fsanitize=undefined -fsanitize=address -o run grader.cpp sequence.cpp -g

Compilation message (stderr)

grader.cpp: In function 'int main()':
grader.cpp:28:26: warning: format '%d' expects argument of type 'int', but argument 3 has type 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wformat=]
   28 |     fprintf (fifo_out, "%d\n", ans.size ());
      |                         ~^     ~~~~~~~~~~~
      |                          |              |
      |                          int            std::vector<int>::size_type {aka long unsigned int}
      |                         %ld
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...