답안 #72144

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
72144 2018-08-26T05:31:53 Z BOJ 8481(#2179, veydpz, jh05013, 16silver) 마법 다우징 (FXCUP3_magic) C++17
100 / 100
3 ms 376 KB
#include "dowsing.h"
#include <cstdlib>
using namespace std;

void FindTreasure(int N) {
	int a[2], idx=0;
	int v[50]={0};
	for(int i=1;i<=N;i++){
		if(Detect(i,i)==1) a[idx++]=i;
	}
	if(idx==0){
		int tmp;
		if(N%2==0){
			for(int i=0;i<N/2;i++){
				do{
					tmp=rand()%(N/2);
				} while(v[tmp] != 0);
				if(i==(N/2-1)) break;
				if(Detect(2*tmp+1,2*tmp+2)==1) break;
				v[tmp]=1;
			}
			int j=(tmp==0?3:1);
			if(Detect(2*tmp+1,j)==1) Report(2*tmp+1,2*tmp+1);
			else Report(2*tmp+2,2*tmp+2);
		}
		else{
			for(int i=0;i<(N+1)/2;i++){
				do{
					tmp=rand()%(N/2);
				} while(v[tmp] != 0);
				if(i==(N-1)/2) break;
				if(tmp!=(N-1)/2){
					if(Detect(2*tmp+1,2*tmp+2)==1) break;
				}
				else{
					if(Detect(2*tmp,2*tmp+1)==1) break;
				}
				v[tmp]=1;
			}
			int j=(tmp==0?3:1);
			if(tmp!=(N-1)/2){
				if(Detect(2*tmp+1,j)==1) Report(2*tmp+1,2*tmp+1);
				else Report(2*tmp+2,2*tmp+2);
			}
			else{
				if(Detect(2*tmp,j)==1) Report(2*tmp,2*tmp);
				else Report(2*tmp+1,2*tmp+1);
			}

		}
	}
	else{
		int i;
		for(i=1;i==a[0]||i==a[1];i++);
		if(Detect(a[0],i) == 1) Report(a[0],a[1]);
		else Report(a[1],a[0]);
	}
}

Compilation message

dowsing.cpp: In function 'void FindTreasure(int)':
dowsing.cpp:12:7: warning: 'tmp' may be used uninitialized in this function [-Wmaybe-uninitialized]
   int tmp;
       ^~~
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 256 KB Correct : C = 5
2 Correct 2 ms 376 KB Correct : C = 4
3 Correct 3 ms 376 KB Correct : C = 149
4 Correct 3 ms 376 KB Correct : C = 100
5 Correct 3 ms 376 KB Correct : C = 150
6 Correct 3 ms 376 KB Correct : C = 101
7 Correct 3 ms 376 KB Correct : C = 148
8 Correct 3 ms 376 KB Correct : C = 150
9 Correct 3 ms 376 KB Correct : C = 150
10 Correct 3 ms 376 KB Correct : C = 109
11 Correct 3 ms 376 KB Correct : C = 130
12 Correct 3 ms 376 KB Correct : C = 121