한 노 타 (3)

한 노 타 (3)
시간 제한:
3000 ms  |  메모리 제한:
65535 KB
난이도:
3
묘사 하 다.
인도 에 서 는 세계 중심 베 나 레 스 (인도 북부) 의 성묘 에 황동 판 에 세 개의 보석 바늘 이 꽂 혀 있다 는 오래된 전설 이 있다.힌두교 의 주신 범 천 은 세 계 를 창조 할 때 그 중의 한 바늘 에 아래 에서 위로 큰 것 에서 작은 것 까지 64 개의 금 조각 을 입 었 다. 이것 이 바로 한 노 타 라 는 것 이다.낮 과 밤 을 막론하고 한 승려 가 아래 의 법칙 에 따라 이 금 조각 들 을 이동 하고 있다. 한 번 에 한 조각 만 이동 하고 어느 바늘 에 있 든 작은 조각 은 반드시 큰 조각 위 에 있어 야 한다.승려 들 은 모든 금 조각 이 범 천 이 입 은 그 바늘 에서 다른 바늘 로 옮 겨 질 때 세 계 는 벼락 속 에서 소멸 되 고 범 탑, 절 과 중생 도 함께 죽 을 것 이 라 고 예언 했다.
지금 우 리 는 세 개의 바늘 번 호 를 1, 2, 3 으로 매 긴 다.모든 금 조각 은 초기 에 1 번 바늘 에 있 었 는데, 지금 당신 에 게 주 는 임 무 는 일련의 명령 과정 에서 불법 명령 이 나 올 지 여 부 를 판단 하 는 것 입 니 다.한편, 불법 지령 은 다음 과 같은 두 가지 상황 이 있다. 1. 어떤 바늘 에 금 조각 이 없 지만 지령 은 여전히 이곳 에서 금 조각 을 다른 바늘 로 이동 하도록 요구한다.2. 큰 금 조각 하 나 를 작은 금 조각 으로 옮 겼 습 니 다.
입력
첫 번 째 줄 에 정수 N 을 입력 하면 테스트 데 이 터 를 나타 내 는 그룹 수 (N < 10) 는 각 그룹의 테스트 데이터 의 첫 줄 에 두 개의 정수 P, Q (1 < P < 64, 1 < Q < 100) 가 있 는데 각각 한 노 타의 층수 와 그 다음 명령 의 줄 수 를 나타 내 는 Q 줄 이 있 고 각 줄 에 두 개의 정수 a, b, (1 < = a, b < = 3) 를 입력 하면 하나의 명령 을 나타 낸다.지령 12 는 1 번 바늘 맨 위의 금 조각 을 2 번 바늘 맨 위로 옮 기 는 것 을 의미한다.데이터 보증 a, b 는 같 지 않 습 니 다.
출력
불법 명령 이 있 으 면 불법 명령 이 존재 하지 않 으 면 legal 을 출력 하 십시오.
샘플 입력
3
2 1
1 2
3 3
1 2
1 3
3 2
2 1
2 1

샘플 출력
legal
illegal
illegal

원본 코드:
#include #include #include using namespace std; int main() {   int n;   cin>>n;   while(n--)   {     stacks[4];     int p,q,i;     cin>>p>>q;     for(i=p; i>=1; i--)     {       s[1].push(i);     }     int a,b,f=1;     for(i=0; i>a>>b;       if(s[a].empty() || (!s[b].empty() && s[a].top() > s[b].top()))        {         f=0;         cout<<"illegal"<

좋은 웹페이지 즐겨찾기