[백준 20364] 부동산 다툼 (C++)

[백준 20364] 부동산 다툼 (C++)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49

#include < iostream > #include < stack > using namespace std ; bool check[ 1048577 ]; // 2^20; int main() { ios_base::sync_with_stdio( false ); cin .tie( 0 ); int N, Q; cin > > N > > Q; for ( int i = 0 ; i < Q; i + + ) { int num; cin > > num; int temp = num; bool canreach = true ; stack < int > st; //경로를 스택에 넣어줌 while (temp ! = 0 ) { st.push(temp); temp / = 2 ; } //스택 꺼내면서 경로확인 while ( ! st.empty()) { temp = st.top(); //경로의 해당 땅을 지나갈 수 없으면 if (check[temp] = = true ) { cout < < temp < < '

' ; canreach = false ; break ; } //지나갈 수 있으면 pop else st. pop (); } //땅을 가질 수 있는 경우 if (canreach) { cout < < 0 < < '

' ; check[num] = true ; } } return 0 ; } Colored by Color Scripter

from http://gamedoridori.tistory.com/22 by ccl(A) rewrite - 2021-09-01 17:00:06