제출 #1174562

#제출 시각아이디문제언어결과실행 시간메모리
1174562guagua0407Hidden Sequence (info1cup18_hidden)C++20
0 / 100
3 ms528 KiB
#include "grader.h"
//#include "grader.cpp"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pii pair<int,int>
#define f first
#define s second
#define all(x) x.begin(),x.end()
#define _ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);

vector < int > findSequence (int n)
{
    auto ask=[&](int a,int b,int c,int v){
        vector<int> vec;
        for(int i=0;i<a;i++){
            vec.push_back(v);
        }
        for(int i=0;i<b;i++){
            vec.push_back(v^1);
        }
        for(int i=0;i<c;i++){
            vec.push_back(v);
        }
        return isSubsequence(vec);
    };
    int zero=0;
    int one=0;
    while(zero<=(n/2)){
        if(ask(zero,0,0,0)){
            zero++;
        }
        else{
            zero--;
            break;
        }
    }
    bool iszero=true;
    if(zero<=(n/2)){
        one=n-zero;
    }
    else{
        while(one<=(n/2)){
            if(ask(0,one,0,0)){
                one++;
            }
            else{
                one--;
                break;
            }
        }
        zero=n-one;
        iszero=false;
    }
    vector<int> res;
    if(iszero){
        vector<int> cnt(zero+1);
        for(int i=0;i<=zero;i++){
            int cur=0;
            while(zero+cur<=(3*n/4)+1){
                if(ask(i,cur,zero-i,0)){
                    cur++;
                }
                else{
                    cur--;
                    break;
                }
            }
            if(zero+cur<=(3*n/4)+1){
                cnt[i]=cur;
            }
            else{
                cnt[i]=-1;
            }
        }
        int sum=0;
        for(int i=0;i<=zero;i++){
            if(cnt[i]!=-1) sum+=cnt[i];
        }
        for(int i=0;i<=zero;i++){
            if(cnt[i]==-1){
                cnt[i]=one-sum;
            }
        }
        for(int i=0;i<=zero;i++){
            for(int j=0;j<cnt[i];j++){
                res.push_back(1);
            }
            if(i<zero) res.push_back(0);
        }
    }
    else{
        vector<int> cnt(one+1);
        for(int i=0;i<=one;i++){
            int cur=0;
            while(one+cur<=(3*n/4)+1){
                if(ask(i,cur,one-i,1)){
                    cur++;
                }
                else{
                    cur--;
                    break;
                }
            }
            if(one+cur<=(3*n/4)+1){
                cnt[i]=cur;
            }
            else{
                cnt[i]=-1;
            }
        }
        int sum=0;
        for(int i=0;i<=one;i++){
            if(cnt[i]!=-1) sum+=cnt[i];
        }
        for(int i=0;i<=one;i++){
            if(cnt[i]==-1){
                cnt[i]=zero-sum;
            }
        }
        for(int i=0;i<=one;i++){
            for(int j=0;j<cnt[i];j++){
                res.push_back(0);
            }
            if(i<one) res.push_back(1);
        }
    }
    return res;
}

컴파일 시 표준 에러 (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...