Submission #759078

#TimeUsernameProblemLanguageResultExecution timeMemory
759078FidiskCave (IOI13_cave)C++17
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
#include "cave.h"
using namespace std;

#define edge(xxxx,yyyy) ((xxxx)*(m+5)+(yyyy))
#define oo 1e18
#define fi first
#define se second
#define sp(iiii) setprecision(iiii)
#define IO ios_base::sync_with_stdio(false); cin.tie(0)
#define ms(aaaa,xxxx) memset(aaaa,xxxx,sizeof(aaaa))
#define cntbit(xxxx) __builtin_popcount(xxxx)
#define getbit(xxxx,aaaa) (((xxxx)>>((aaaa)-1))&1)
#define totbit(xxxx) (32-__builtin_clz(xxxx))
#define totbitll(xxxx) (64-__builtin_clzll(ll(xxxx)))

typedef long double ld;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
typedef pair<pair<int,int>,int> piii;
typedef pair<long long,long long> pll;
typedef pair<pair<long long,long long>,long long> plll;
typedef pair<pair<long long,long long>,pair<long long,long long>> pllll;
typedef pair<pair<long long,long long>,bool> pllb;

const ll base=333333349;
const ll mod=1e9+7;
const ld eps=1e-5;
const ll maxn=50009;

vector<pii> correctPart,stablePart,questionPart,inversePart;
vector<int> ans1,ans2,queryVect;

/*
int tryCombination(vector<int> ans) {
    for (int i=0;i<ans.size();i++) {
        cout<<ans[i]<<' ';
    }
    cout<<'\n';
    //cout<<"Query completed!\n";
    int kq;
    cin>>kq;
    return kq;
}

void answer(vector<int> x,vector<int> y) {
    for (int i=0;i<x.size();i++) {
        cout<<x[i]<<' ';
    }
    cout<<'\n';
    for (int i=0;i<y.size();i++) {
        cout<<y[i]<<' ';
    }
    cout<<'\n';
}
*/

int query() {
    //cout<<"We're here 2\n";
    //return 0;
    int k=correctPart.size();
    for (int i=0;i<k;i++) {
        queryVect[correctPart[i].fi]=correctPart[i].se;
    }
    k=stablePart.size();
    for (int i=0;i<k;i++) {
        queryVect[stablePart[i].fi]=stablePart[i].se;
    }
    k=questionPart.size();
    for (int i=0;i<k;i++) {
        queryVect[questionPart[i].fi]=questionPart[i].se;
    }
    k=inversePart.size();
    for (int i=0;i<k;i++) {
        queryVect[inversePart[i].fi]=inversePart[i].se^1;
    }
    k=tryCombination(queryVect);
    //cout<<k<<'\n';
    if (k<0) {
        return 5001;
    }
    return k;
}

void exploreCave(int n) {
    int m=n;
    correctPart.clear();
    stablePart.clear();
    questionPart.clear();
    inversePart.clear();
    queryVect.resize(n);
    for (int i=0;i<n;i++) {
        questionPart.push_back({i,0});
    }
    while (m>0) {
        int p=n-m;
        int k=questionPart.size();
        //cout<<"We're here\n";
        //return;
        //cout<<p<<"Reset\n";
        if (query()==p) {
            //cout<<"Flip!\n";
            for (int i=0;i<k;i++) {
                questionPart[i].se^=1;
            }
        }
        //for (int i=0;i<k;i++) {
        //    cout<<questionPart[i].fi<<"|"<<questionPart[i].se<<' ';
        //}
        //cout<<'\n';
        while (k>1) {
            for (int i=0;i<k/2;i++) {
                inversePart.push_back(questionPart.back());
                questionPart.pop_back();
            }
            if (query()==p) {
                k=questionPart.size();
                for (int i=0;i<k;i++) {
                    stablePart.push_back(questionPart.back());
                    questionPart.pop_back();
                }
                swap(questionPart,inversePart);
            }
            else {
                k=inversePart.size();
                for (int i=0;i<k;i++) {
                    stablePart.push_back(inversePart.back());
                    inversePart.pop_back();
                }
            }
            k=questionPart.size();
        }
        correctPart.push_back(questionPart.back());
        //cout<<correctPart.back().fi<<' '<<correctPart.back().se<<'\n';
        questionPart.clear();
        swap(questionPart,stablePart);
        m--;
    }

    ans1.resize(n);
    ans2.resize(n);

    for (int i=0;i<n;i++) {
        ans2[correctPart[i].fi]=i;
    }
    for (int i=0;i<n;i++) {
        ans1[correctPart[i].fi]=correctPart[i].se;
    }

    answer(ans1,ans2);
}

Compilation message (stderr)

cave.cpp: In function 'int query()':
cave.cpp:78:22: error: cannot convert 'std::vector<int>' to 'int*'
   78 |     k=tryCombination(queryVect);
      |                      ^~~~~~~~~
      |                      |
      |                      std::vector<int>
In file included from cave.cpp:2:
cave.h:8:24: note:   initializing argument 1 of 'int tryCombination(int*)'
    8 | int tryCombination(int S[]);
      |                    ~~~~^~~
cave.cpp: In function 'void exploreCave(int)':
cave.cpp:151:12: error: cannot convert 'std::vector<int>' to 'int*'
  151 |     answer(ans1,ans2);
      |            ^~~~
      |            |
      |            std::vector<int>
In file included from cave.cpp:2:
cave.h:9:17: note:   initializing argument 1 of 'void answer(int*, int*)'
    9 | void answer(int S[], int D[]);
      |             ~~~~^~~