Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

贴个代妈

Posted by KatrineYang at 2016-09-16 12:52:01 on Problem 1363
#include <iostream>
#include <stdio.h>
using namespace std;

int main() {
	int N;
	while(1){
		scanf("%d", &N);
		if(!N) break;
		while(1){
			int order[1010];
			scanf("%d", &order[1]);
			if(!order[1]) break;
			for(int i = 2; i <= N; i++) scanf("%d", &order[i]);
			int stk[1010];
			int pos = 0;
			int state[1010] = {0};//0: 在A 1: 在B 2: 在C
			int cur = 1;
			bool ky = 1;
			for(int i = 1; i <= N; i++){
				int req = order[i];
				if(state[req] == 0){
					while(cur != req){
						stk[pos] = cur;
						pos++;
						state[cur] = 1;
						cur++;
					}
					state[req] = 2;
					cur++;
				}
				else if(state[req] == 1){
					if(stk[pos-1] == req){
						state[req] = 2;
						pos--;
					}
					else{
						ky = 0;
						break;
					}
				}
				else{
					ky = 0;
					break;
				}
			}
			if(ky) printf("Yes\n");
			else printf("No\n");
		}
		printf("\n");
	}
	return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator