제출 #971289

#제출 시각아이디문제언어결과실행 시간메모리
971289andro동굴 (IOI13_cave)C++14
0 / 100
245 ms600 KiB
#include <bits/stdc++.h>

#include "cave.h"

using namespace std;
/*
int tryCombination(int S[]) {
    for(int i = 0; i < 4; i++) {
        cout << S[i] << " ";
    }
    cout << endl;
    int x;
    cin >> x;
    return x;
}

void answer(int c[], int d[]) {

}*/

void exploreCave(int N) {
    int c[N];
    int D[N];
    int S[N];
    int izracunao[N];
    for(int i = 0; i < N; i += 1) {
        S[i] = 0;
        izracunao[i] = 0;
    }
    for(int i = 1; i <= N; i++) {
        int ask = tryCombination(S);
        if(ask == - 1) {
            ask = N + 1;
        }
        if(ask >= i) {
            // 0 je
            int l = 0, r = N - 1, p = - 1;
            while(l <= r) {
                int mid = (l + r) / 2;
                for(int j = mid; j < N; j += 1) {
                    if(izracunao[j]) {
                        continue;
                    }
                    S[j] ^= 1;
                }
                int ask = tryCombination(S);
                if(ask == - 1) {
                    ask = N + 1;
                }
                if(ask >= i) {
                    l = mid + 1;
                    p = mid;
                }
                else {
                    r = mid - 1;
                }
                for(int j = mid; j < N; j += 1) {
                    if(izracunao[j]) {
                        continue;
                    }
                    S[j] ^= 1;
                }
            }
            izracunao[p] = 1;
            D[p] = i - 1;
            //cout << "! " << p << " " << i - 1;
            //cout << endl;
        }
        else {
            // 1 je
            int l = 0, r = N - 1, p = - 1;
            while(l <= r) {
                int mid = (l + r) / 2;
                for(int j = 0; j <= mid; j += 1) {
                    if(izracunao[j]) {
                        continue;
                    }
                    S[j] ^= 1;
                }
                int ask = tryCombination(S);
                if(ask == - 1) {
                    ask = N + 1;
                }
                if(ask >= i) {
                    r = mid - 1;
                    p = mid;
                }
                else {
                    l = mid + 1;
                }
                for(int j = 0; j <= mid; j += 1) {
                    if(izracunao[j]) {
                        continue;
                    }
                    S[j] ^= 1;
                }
            }
            //cout << "! " << p << " " << i - 1;
            //cout << endl;
            izracunao[p] = 1;
            S[p] = 1;
            D[p] = i - 1;
        }
    }
    answer(S, D);
    //cout << endl;
    for(int i = 0; i < N; i++) {
        //cout << S[i] << " ";
    }
    //cout << endl;
    for(int i = 0; i < N; i += 1) {
        //cout << D[i] << " ";
    }
}
/*
int main() {
    exploreCave(4);
}*/

컴파일 시 표준 에러 (stderr) 메시지

cave.cpp: In function 'void exploreCave(int)':
cave.cpp:22:9: warning: unused variable 'c' [-Wunused-variable]
   22 |     int c[N];
      |         ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...