//数字炸弹(自制)
#include <unistd.h>
#include<bits/stdc++.h>
using namespace std;
bool f[20],p[20]; 
int main(){
	stack<int>s;
	int zd=0,n,m;
	srand(time(0));
	zd=rand()%98+2;
	cout<<"数字炸弹(1-100)\n";
	cout<<"请输入总人数:(2-10)\n";
	while(cin>>n){
		if(n>10){
			cout<<"太多了\n"; 
		}else if(n<2){
			cout<<"太少了\n";
		}else{
			break;
		}
	}
	cout<<"请输入真人数量\n";
	while(cin>>m){
		if(m>n){
			cout<<"太多了\n"; 
		}else if(m<0){
			cout<<"太少了\n";
		}else{
			break;
		}
	}
	cout<<"真人为 "; 
	for(int i=1;i<=m;i++){
		p[i]=true;
		sleep(1);
		cout<<i<<"号 "; 
	}
	sleep(1);
	cout<<"\n1至100\n";
	int a,l=1,r=100,last=n,y=n;
	for(int i=1;1;i++){
		if(i>n){
			i=1;
		}
		if(f[i]){
			continue;
		}
		if(p[i]){
			cout<<"请"<<i<<"号玩家开始猜数:\n";
		}else{
			cout<<"请"<<i<<"号人机开始猜数:\n";
		}
		if(p[i]){
			while(cin>>a){
				if(a>r||a<l||a==l||a==r){
					cout<<"请在规定范围内猜数\n";
				}else{
					break;
				}
			}
		}else{
			sleep(1);
			a=l+rand()%(r-l-1)+1;
			cout<<a<<"\n";
			sleep(3);
		}
		if(a>zd){
			r=a;
		}
		if(a<zd){
			l=a;
		}
		if(a==zd){
			if(p[i]){
				cout<<"”嘣“\n"<<i<<"号玩家出局\n";
			}else{
				cout<<"”嘣“\n"<<i<<"号人机出局\n";
			}
			s.push(i);
			sleep(3);
			y--;
			f[i]=true;
			if(y>1){
				cout<<"游戏继续\n";
				sleep(2);
				system("cls");
				cout<<"还剩"<<y<<"位\n";
				cout<<"分别是 ";
				for(int i=1;i<=n;i++){
					if(!f[i]){
						cout<<i<<"号 ";
						sleep(2);
					}
				}
				l=1;
				r=100;
				cout<<"\n"<<l<<"至"<<r<<"\n"; 
				zd=rand()%98+2;
			}else{
				break;
			}
		}else{
			last=i;
			cout<<l<<"至"<<r<<"\n";
		}
	}
	s.push(last);
	cout<<"游戏结束\n";
	sleep(1);
	cout<<"\n排名榜:\n";
	sleep(1);
	for(int i=1;i<=n;i++){
		cout<<"第"<<i<<":"<<s.top()<<"号\n";
		sleep(2);
		s.pop(); 
	}
	if(p[last]){
		cout<<"恭喜"<<last<<"号玩家赢得了比赛的第一(* ^_^ *)\n";
	}else{
		cout<<"恭喜"<<last<<"号人机赢得了比赛的第一(这次的玩家真菜( ̄_ ̄|||))\n";
	}
	return 0;
}