View Code of Problem 6

#include <stdio.h>
typedef struct data{
	int min;
	int max; 
}safes;
safes safe[100];//最多一百个陷阱即100个安全区 

int main(int argc, char *argv[])
{
	int t,n;//t组数据,n个陷阱
	int i;
	int step;
	int flag;
	safe[0].min=0;
	scanf("%d",&t);
	while(t--){
		scanf("%d",&n);
		for(i=0;i<n;i++){
			scanf("%d",&safe[i].max);
			scanf("%d",&safe[i+1].min);
		}
		safe[i].max=50000;
			/*
		for(i=0;i<=n;i++){
			printf("最小值:%d 最大值:%d\n",safe[i].min,safe[i].max);
		}
	*/
		for(step=safe[1].min;step<=safe[1].max;step++){
			flag = 1;//默认该步长可行 
			for(i=2;i<=n;i++){
				step+=step;
				if(step<safe[i].min||step>safe[i].max){//如果不满足任一安全区间 
					flag = 0;
					break;
				}
			}
			if(flag==1){//若满足了所有安全区间 
				printf("Yes\n");
				break;
			}
		}
		if(flag==0)
			printf("No\n");
	} 
	return 0;
}

Double click to view unformatted code.


Back to problem 6