Submission #1143041

#TimeUsernameProblemLanguageResultExecution timeMemory
1143041KasymKHidden Sequence (info1cup18_hidden)C++20
100 / 100
2 ms420 KiB
#include "bits/stdc++.h"
#include "grader.h"
using namespace std;
#define ff first
#define ss second
#define all(v) v.begin(), v.end()
#define ll long long
#define pb push_back
#define pii pair<int, int>
#define pli pair<ll, int>
#define pll pair<ll, ll>
#define tr(i, c) for(auto i = c.begin(); i != c.end(); ++i)
#define wr puts("----------------")
template<class T>bool umin(T& a,T b){if(a>b){a=b;return 1;}return 0;}
template<class T>bool umax(T& a,T b){if(a<b){a=b;return 1;}return 0;}
// vector<int> cyn;

// bool isSubsequence(vector<int> s){
//     int last=0, sm=0;
//     tr(it, s){
//         bool did=0;
//         while(last<(int)cyn.size()){
//             if(cyn[last]==*it){
//                 did=1;
//                 sm++;
//             }
//             last++;
//             if(did)
//                 break;
//         }
//     }
//     return sm==(int)s.size();
// }

vector<int> findSequence(int n){
    int nil=0, one=0;
    vector<int> ask;
    for(int i = 1; i <= n/2+1; ++i)
        ask.pb(0);
    if(isSubsequence(ask)){
        ask.clear();
        bool did=0;
        for(int i = 1; !did; ++i){
            ask.pb(1);
            if(!isSubsequence(ask))
                one=i-1, did=1;
        }
        nil=n-one;
    }
    else{
        ask.clear();
        bool did=0;
        for(int i = 1; !did; ++i){
            ask.pb(0);
            if(!isSubsequence(ask))
                nil=i-1, did=1;
        }
        one=n-nil;
    }
    int dnil=0, done=0;
    vector<int> s;
    while((int)s.size()<n){
        if(dnil+1+one-done<=n/2+1){
            ask.clear();
            for(int i = 1; i <= dnil+1; ++i)
                ask.pb(0);
            for(int i = 1; i <= one-done; ++i)
                ask.pb(1);
            if(isSubsequence(ask))
                s.pb(0), dnil++;
            else
                s.pb(1), done++;
            continue;
        }
        ask.clear();
        for(int i = 1; i <= done+1; ++i)
            ask.pb(1);
        for(int i = 1; i <= nil-dnil; ++i)
            ask.pb(0);
        if(isSubsequence(ask))
            s.pb(1), done++;
        else
            s.pb(0), dnil++;
    }
    return s;
}

// int main(){
//     int n;
//     scanf("%d", &n);
//     for(int i = 1; i <= n; ++i){
//         int x;
//         scanf("%d", &x);
//         cyn.pb(x);
//     }
//     vector<int> ans=findSequence(n);
//     tr(it, ans)
//     printf("%d ", *it);
//     return 0;
// }

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