답안 #72322

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
72322 2018-08-26T07:06:21 Z cat > /dev/null(#2231, lobo_prix, jms100300, enochjung) 마법 다우징 (FXCUP3_magic) C++11
0 / 100
2 ms 376 KB
#include "dowsing.h"
#include<set>
#include<ctime>
#include<cstdio>
#include<cstdlib>
using namespace std;

void FindTreasure(int N) {
    bool t11 = Detect(1, 1), t12 = Detect(1, 2), t21 = Detect(2, 1);

    if (!t11 && t12 && t21) {
        Report(1, 1);
        return;
    }
    if (t11 && t12 && !t21) {
        for (int i = 1; i <= N; i ++)
            if (!Detect(1, i)) {
                Report(1,i);
                return;
            }
    }
    if (t11 && t21 && !t12) {
        for (int i = 1; i <= N; i ++)
            if (!Detect(i, 1)) {
                Report(i,1);
                return;
            }
    }

    if (t11 && !t12 && !t21) {
        if (Detect(1, 3)) {
            Report(1, 2);
            return;
        }
        if (Detect(3, 1)) {
            Report(2, 1);
            return;
        }
    }

    srand(time(NULL));
    set<int> rest, rest2;

    for (int i = 1; i <= N; i ++)
        rest.insert(i), rest2.insert(i);

    int row, col;

    while (true) {
        int ra = ((long long)rand() * rand()) % rest.size();

        int val; 
        for (int item : rest) {
            val = item;
            if (!ra)
                break;
            ra--;
        }

        if (Detect(1, val)) {
            col = val;
            break;
        }

        rest.erase(val);
    }


    while (true) {
        int ra = ((long long)rand() * rand()) % rest2.size();

        int val; 
        for (int item : rest2) {
            val = item;
            if (!ra)
                break;
            ra--;
        }

        if (Detect(val,1)) {
            row = val;
            break;
        }

        rest2.erase(val);
    }

    Report(row, col);
}
# 결과 실행 시간 메모리 Grader output
1 Runtime error 2 ms 376 KB Execution failed because the return code was nonzero
2 Halted 0 ms 0 KB -