• 个人简介

    [ ] ```language

    
    否则,你不是人;
    if(you are a human) you must can get score in every test;
    else you are not a human;
    我不是老six
    我是崂大😕
    学校就是一座黑暗森林,每个班主任都是带枪的猎人,像幽灵般潜行与走廊,轻轻推开挡路的后门,竭力不让脚步发出一点声音,连呼吸都小心翼翼,他必须小心,因为班中到处都存在与他作对的学生……
    未完待续
    using namespace std;
    typedef long long ll;
    ll a[5000010];
    int main(){
    	ios::sync_with_stdio(false);
    	cin.tie(0);
    	cout.tie(0);
    	int n,k;
    	cin>>n>>k;
    	map<ll,ll> m;
    	for(int i=1;i<=n;i++){
    		cin>>a[i];
    		m[a[i]]++;
    	}
    	ll cnt=-2e10,maxn=-2e10;
    	for(int i=1;i<=n;i++){
    		if(m[a[i]]>1){
    			maxn=max(maxn,m[a[i]]);
    		}
    	}
    	for(int i=1;i<=n;i++){
    		if(m[a[i]]>1&&m[a[i]]!=maxn){
    			cnt=max(cnt,m[a[i]]);
    		}
    	}
    	cout<<cnt+maxn;
    	return 0;
    }
    
    十年OI一场空,不开long long 见祖宗 你今天做题了吗?(灵魂拷问)
    
    不准盗简介 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    
    \\\\ \\ \\ \\ \\ \\ \\        _ooOoo_          // // // // // // ////
    \\\\ \\ \\ \\ \\ \\          o8888888o            // // // // // ////
    \\\\ \\ \\ \\ \\             88" . "88               // // // // ////
    \\\\ \\ \\ \\                (| -_- |)                  // // // ////
    \\\\ \\ \\                   O\  =  /O                     // // ////
    \\\\ \\                   ____/`---'\____                     // ////
    \\\\                    .'  \\|     |//  `.                      ////
    //==                   /  \\|||  :  |||//  \                     ==\\
    //==                  /  _||||| -:- |||||-  \                    ==\\
    //==                  |   | \\\  -  /// |   |                    ==\\
    //==                  | \_|  ''\---/''  |   |                    ==\\
    //==                  \  .-\__  `-`  ___/-. /                    ==\\
    //==                ___`. .'  /--.--\  `. . ___                  ==\\
    //==             ."" '<  `.___\_<|>_/___.'  >' "".               ==\\
    //==            | | :  `- \`.;`\ _ /`;.`/ - ` : | |              \\\\
    ////            \  \ `-.   \_ __\ /__ _/   .-` /  /              \\\\
    ////      ========`-.____`-.___\_____/___.-`____.-'========      \\\\
    ////                           `=---='                           \\\\
    //// //       ||^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  \\ \\\\
    //// // //                                                  \\ \\ \\\\
    //// // // // // // || || || || || || || || || || \\ \\ \\ \\ \\ \\\\
    Waiting 评测:评测请求正在等待被评测机抓取
    Fetched 评测:评测请求已被评测机抓取,正在准备开始评测
    Compiling 评测:正在编译中
    Judging 评测:编译成功,正在评测中
    Accepted 通过:程序输出完全正确
    Wrong Answer 通过:好答案
    Time Limit Exceeded通过:时间充裕
    Memory Limit Exceeded 通过:内存充裕
    Runtime Error 通过:完美运行
    Compile Error 通过:轻松通过编译
    System Error 正常:系统正常
    Unknown Error程序太好:被称赞
    Canceled 非常棒:评测没问题
    Ignored 其他:被关注
    广搜别枝惊鹊,深搜半夜鸣蝉。稻花香里说DP,听取WA声一片。七八个TLE天外,两三点MLE山前。旧时RE社林边,路转AC忽见。
    
    
    AC: Answer Coarse, 粗劣的答案
    
    CE: Compile Easily, 轻松通过编译
    
    PC: Perfect Compile, 完美的编译
    
    WA: Wonderful Answer, 好答案
    
    RE: Run Excellently, 完美运行
    
    TLE: Time Limit Enough, 时间充裕
    
    MLE: Memory Limit Enough, 内存充裕
    
    OLE: Output Limit Enough, 输出合法
    
    UKE: Unbelievably Keep Enough score, 难以置信地保持足够的分数
    
    #include<windows.h>
    #include<time.h>
    #include<conio.h>
    using namespace std;
    int mzhg,zd,swhm,qxs,swx,sn,mp,tongguan,sw1,zd1,sn1,mz1,mp1,zbbj,ccg,mzzd,mz,tongguan1,sw,x,s,cdd,jg,qiang,gun,by,vv,gjj[100],hjj[100],zjj[100];
    void Read()
    {
    	ifstream in("丧尸危机存档.in");
    	in>>mzhg>>zd>>swhm>>qxs>>swx>>sn>>mp>>tongguan>>sw1>>zd1>>sn1>>mz1>>mp1>>zbbj>>ccg>>mzzd>>mz>>tongguan1>>sw>>x>>s>>cdd>>jg>>qiang>>gun>>by>>vv;
    	swx=2;
    	for(int i=0;i<=99;i++) in>>gjj[i];
    	for(int i=0;i<=99;i++) in>>hjj[i];
    	for(int i=0;i<=99;i++) in>>zjj[i];
    	in.close();
    }
    void Save()
    {
    	ofstream out("丧尸危机存档.in");
    	out<<mzhg<<' '<<zd<<' '<<swhm<<' '<<qxs <<' '<<swx<<' '<<sn<<' '<<mp<<' '<<tongguan<<' '<<sw1<<' '<<zd1<<' '<<sn1<<' '<<mz1<<' '<<mp1<<' '<<zbbj<<' '<<ccg<<' '<<mzzd<<' '<<mz<<' '<<tongguan1<<' '<<sw<<' '<<x<<' '<<s<<' '<<cdd<<' '<<jg<<' '<<qiang<<' '<<gun<<' '<<by<<' '<<vv<<'\n';
    	for(int i=0;i<=99;i++) out<<' '<<gjj[i];out<<'\n';
    	for(int i=0;i<=99;i++) out<<' '<<hjj[i];out<<'\n';
    	for(int i=0;i<=99;i++) out<<' '<<zjj[i];out<<'\n';
    	out.close();
    }
    void Slowsay(string a) {int l=a.size();for(int i=0;i<l;i++){cout<<a[i];if(vv==0) Sleep(20);}printf("\n");if(vv==1) Sleep(100);}
    int read()
    {
    	char ch=_getch();
    	while(ch>'9'||ch<'0') ch=_getch();
    	return ch-48;
    }
    void qp()
    {
    	system("cls");if(swx==2) Slowsay("王,"),zd=99999,sw=99999;
    	Slowsay("当前你的状态是\n");
    	printf("子弹 %d,食物 %d\n",zd,sw);
    }
    int esl()
    {
    	system("cls");
    	char ch;
    	Slowsay("你,饿死了。\n");
    	if(vv==0) ch=_getch();
    	hjj[1]=1;
    	Slowsay("Bad End  1\n");
    	ch=_getch();
    	s++;
    	return 0;
    }
    int mzd()
    {
    	hjj[2]=1;
    	system("cls");
    	char ch;
    	Slowsay("你,被丧尸咬死了。\n");
    	if(vv==0) ch=_getch();
    	Slowsay("Bad End   2\n");
    	ch=_getch();
    	s++;
    	return 0;
    }
    int hd1()
    {
    	system("cls");
    	Slowsay("在某一天,你家门口响起了敲门声,你打开门,外面的发现让你欣喜若狂\n");
    	Slowsay("政府的救援部队已经消灭了这个城市的丧尸,\n他们在这个城市的各个角落搜索着可能存在的幸存者.\n");
    	Slowsay("Happy End-----苟到最后\n");Sleep(1000);gjj[1]=1;
    	return 0;
    }
    int hd2()
    {
    	system("cls");
    	int sw;
    	char ch;
    	Slowsay("在与妹子相处的这些时间里,你与她相爱了\n");
    	Slowsay("你们的生活是那样的幸福\n");
    	Slowsay("直到有一天......\n");
    	Slowsay("基地首领希望你去执行一个任务,你选择\n");
    	Slowsay("1.独自一人前往\n");
    	Slowsay("2.和妹子一起去\n");
    	while(true)
    	{
    		int x;
    		x=read();
    		if(x<1||x>2)
    		{
    			Slowsay("请重新输入\n");
    			continue;
    		}
    		if(x==1)
    		{
    			Slowsay("当你完成任务回来的时候,发现——\n");
    			Slowsay("基地被丧尸攻破了\n");
    			Slowsay("这个基地的所有人都被丧尸杀了,一个人都没跑出来\n");
    			hjj[4]=1;
    			Slowsay("Bad End    4");
    			s++;
    		}
    		if(x==2)
    		{
    			Slowsay("当你和妹子完成任务回来时,\n");
    			Slowsay("基地已经变成一片废墟了\n");
    			Slowsay("你和妹子没有办法,只能到处流浪\n");
    			Slowsay("不过,两个人总比一个人要好\n");
    			gjj[2]=1;
    			Slowsay("Happy End------神仙眷侣");
    		}
    		break;
    	}    Sleep(1000);
    	return 0;
    }
    int hd3()
    {
    	system("cls");
    	char ch;
    	Slowsay("你就这样平静的生活在这个基地里\n");
    	Slowsay("直到某一天,大量的丧尸进攻了这里\n");
    	if(zd>9)
    	{
    		Slowsay("每个人都在尽自己的努力去守卫基地\n");
    		Slowsay("每个人都做到了自己能做到的\n");
    		Slowsay("最后,奇迹出现了\n");
    		Slowsay("大家成功守住了基地\n");
    		Slowsay("而你,也因为在守卫过程中立下大功成为了这个基地的英雄\n");
    		Slowsay("顺便说一句,到死了你也没女朋友\n");
    		gjj[3]=1;
    		Slowsay("Happy End-----英雄不朽");
    		return 0;
    	}
    	Slowsay("丧尸的数量实在太多了,\n");
    	Slowsay("尽管基地的大家都在尽全力防守\n");
    	Slowsay("可基地还是被攻破了\n");
    	Slowsay("而你,也死在了这里\n");
    	s++;
    	hjj[5]=1;
    	Slowsay("Bad End     5"); Sleep(1000);
    }
    int hd4()
    {
    	system("cls");
    	Slowsay("在于少年相处的这些时间里");
    	Slowsay("你尽力地保护着他");
    	Slowsay("而他也常常给你带来惊喜");
    	Slowsay("慢慢的,你开始认清你自己");
    	Slowsay("你是个gay");
    	Slowsay("于是,你就和少年幸福快乐的生活在了一起");
    	Slowsay("Happy End-----认清自己");
    	gjj[4]=1;  Sleep(1000);
    }
    int td()
    {
    	system("cls");
    	char ch;
    	Slowsay("那箱饼干与你的枪一起发出了强光\n");
    	Slowsay("紧接着,他们融为了一体\n");
    	Slowsay("当光芒散去时,整个世界都发生了变化\n");
    	Slowsay("所有的丧尸都变回了人类\n");
    	Slowsay("伟大的勇士!丧尸危机终于解除了!!接下来,是普天同庆的大狂欢!!!\n");
    	Slowsay("True End-----拯救世界\n");Sleep(1000);
    	Slowsay("???????????????????????????????????");
    	Slowsay("......这是怎么回事......");
    	Slowsay("......为什么......");
    	Slowsay("......不是普通的......");
    	Slowsay("......从何而来......");Sleep(1000);
    	Slowsay("。 。 。 。 。 。是谁。 。 。 。 。 。");
    	Slowsay("你陷入沉思。");
    	if(zjj[1]!=1)
    	{
    		Slowsay("获得线索-----奇特的枪与饼干");
    	}
    	zjj[1]=1; Sleep(1000);
    }
    int td2()
    {
    	system("cls");
    	char ch;
    	Slowsay("你的变异已经开始了");
    	Slowsay("你开始疯狂的进食,直到把自己的胃撑破");
    	Slowsay("然后,就眼前一黑失去意识");
    	Slowsay("再次醒来时,你已经是一个丧尸了");
    	Slowsay("奇怪的是,你还保留着自己的意识");
    	Slowsay("你感觉到自己的力气变得更大,速度变得更快");
    	Slowsay("或许变成丧尸也不错————你这样想着");
    	Slowsay("True End-----认清!·本我");
    	if(zjj[2]!=1)
    	{
    		Sleep(2000);
    		Slowsay("获得线索-----延迟变异!·少年");
    	}
    	zjj[2]=1; Sleep(1000);
    }
    int bd8()
    {
    	Slowsay("坐在椅子上的是一个15岁左右的少年");
    	Slowsay("正在你因为他的年龄而惊讶时");
    	Slowsay("少年却站了起来,看向了你身后的妹子");
    	Slowsay("“差不多了吧”,妹子这样说道");
    	Slowsay("“可以了”,这是少年的回答");
    	Slowsay("然后,你就感到脖子一阵剧痛");Sleep(1000);
    	Slowsay("在你失去意识前,妹子一直没有松口。");
    	s++;
    	Slowsay("Bad End     8");
    	if(hjj[8]==0)
    	{
    		Sleep(2000);
    		Slowsay("获得线索-----早已变异!·妹子");
    	}
    	hjj[8]=1;  Sleep(1000);
    }
    int td3()
    {
    	system("cls");
    	Slowsay("你和妹子冲出了丧尸的围杀,");
    	Slowsay("可是当你们来到那个幸存者基地时");
    	Slowsay("却发现那个基地有一些不对");
    	Slowsay("所有人都死气沉沉的");
    	Slowsay("你们直接走向了首领的房间");Sleep(1000);
    	if(zjj[2]==1&&zjj[3]==1)
    	{
    		bd8();
    		return 0;
    	}
    	Slowsay("换完子弹的你想离开");
    	Slowsay("就在你快要离开的时候,妹子抓住了你的手");
    	Slowsay("“我喜欢你,别走”,她这样说");
    	Slowsay("于是,你留了下来");
    	Slowsay("你们的生活是那样的幸福");
    	Slowsay("直到有一天......");Sleep(1000);
    	Slowsay("基地首领希望你去执行一个任务,\n");
    	Slowsay("在执行任务的过程中");
    	Slowsay("妹子曾被丧尸咬到过一口");
    	Slowsay("她以为你没有发现");
    	Slowsay("而你却在远处看到了这一幕");
    	Slowsay("奇怪的是,她却并没有变异\n");
    	Slowsay("那一刹那你突然想起,");
    	Slowsay("你们的房间里,总是弥漫着一股血腥的味道......");Sleep(1000);
    	Slowsay("Happy End------神仙眷侣");Sleep(1000);
    	Slowsay("???????????????????????????????????");
    	Slowsay("True End------认清?·妹子");
    	if(zjj[3]==0)
    	{
    		Sleep(2000);
    		Slowsay("获得线索-----不变异?·妹子");
    	}
    	zjj[3]=1;Sleep(1000);
    }
    int td4()
    {
    	system("cls");
    	Slowsay("当丧尸危机爆发时,你正呆在家里\n");
    	char ch=_getch();
    	if(vv==0) ch=_getch();
    	system("cls");
    	Slowsay("当丧*#******丧尸危机*$*&*^&*机爆发时,**你正呆***&*爆发******#在家里**\n");Sleep(1000);
    	Slowsay("***检*#******测到*不**丧尸危**88机*$匹*$**机爆发时,**配***#在家里****\n");Sleep(2000);
    	Slowsay("L当****#OG****I危机*$N**E机爆***(RR*8%#404)**发时,**你O*****#在家R里!\n");Sleep(2000);
    	system("cls");
    	if(vv==0) ch=_getch();
    	Slowsay("有什么不对劲");
    	Slowsay("你这样想着");
    	Slowsay("过去了好多天,\n你还是一个人都没有遇到,\n除了丧尸就是丧尸");
    	Slowsay("为什么他们......不见了?");
    	Slowsay("\n");
    	Slowsay("True End------验证失败");
    	zjj[4]=1;
    	if(zbbj==0)
    		Slowsay("进阶线索-----乱码,废弃与失联"),zbbj=1;Sleep(1000);
    }
    int td5()
    {
    	system("cls");
    	Slowsay("当少年死去后,整个世界好像变得不同了");
    	Slowsay("所有的活人在一瞬间消失");
    	Slowsay("所有的丧尸当场去世");
    	Slowsay("你的眼前只剩下了黑暗");
    	Slowsay("不知道过去了多久,你死了");
    	Slowsay("Bad End......");Sleep(1000);
    	Slowsay("不,还没有结束");
    	Slowsay("虽然好像和往常死去之后的感觉一样");
    	Slowsay("但是。。。好像。。。");Sleep(1000);
    	Slowsay("有延迟?。。。");
    	Slowsay("。。。在这段时间里,你的思考一直没停。。。");
    	Slowsay("True End-----死亡姗姗来迟");
    	s++;
    	if(zjj[5]==0)
    		Slowsay("进阶线索-----少年之死");
    	zjj[5]=1;   Sleep(1000);
    }
    int tg3()
    {
    	Slowsay("当你再次睁开眼时");
    	Slowsay("你发现自己躺在一个营养仓内");
    	Slowsay("你无比的确认这就是真实的世界");
    	Slowsay("脑中的一切开始明晰起来");
    	Slowsay("你认为自己知道了一切的真相");
    	Slowsay("去杀光人类吧!!!!");
    	Slowsay("你这样想着");
    	Slowsay("在身着白大褂的丧尸们的欢呼声中");
    	Slowsay("你打碎了玻璃,跑出了营养仓");
    	Slowsay("来到了外面这个被战争破坏得满目疮痍的世界");
    	Slowsay("战火硝烟,炮声隆隆");
    	Slowsay("你熟练的发出嘶吼,呼唤着周围的丧尸");
    	Slowsay("你指挥着他们,毁掉了一个又一个人类的基地");
    	Slowsay("最后,在这场世纪战争中,丧尸们艰难地取得了胜利");
    	Slowsay("作为它们的英雄,你自豪的统治着世界。");
    	Slowsay("虽然,其实,在那些你不知道的地方");
    	Slowsay("一个个一样的营养仓中,装着一个个一样的你。");
    	Slowsay("---------------游戏终极剧情通关-------------");
    	tongguan1=2; Save(); Sleep(1000);
    }
    int tg2()
    {
    	Slowsay("当你再次睁开眼时");
    	Slowsay("你发现自己躺在一个营养仓内");
    	Slowsay("你无比的确认这就是真实的世界");
    	Slowsay("可是你却发现自己没法操纵身体");
    	Slowsay("隔着玻璃,一个黑色的身影正在操作着");
    	Slowsay("你清晰的看见那个人的大脑裸露出来,与你的接在一起");
    	Slowsay("这时,又有一大波记忆涌入脑海。");
    	Slowsay("“少年与妹子......是以“成功者”“英雄”“神话传说”为原型创造的人物......”");
    	Slowsay("“游戏中的情节与场景......取材于现实世界真实案例......”");
    	Slowsay("再往后,你的脑中一片混乱。");
    	Slowsay("“...舍弃.........熟练..我....智慧..学习........获得.....”");
    	Slowsay("“.....种族...探索.......杀...进化.........帮助..需要.....”");
    	Slowsay("“...成熟....兵器.....无敌..下风.......战争...伟大.....英雄.....”");
    	Slowsay("激昂的声音一直回荡着。");
    	Slowsay("---------------游戏进阶剧情通关-------------");
    	tongguan1=1; Sleep(1000);
    }
    int td6()
    {
    	Slowsay("一天以后,少年回来了");
    	Slowsay("一起回来的还有妹子");
    	Slowsay("“找到了......”");
    	Slowsay("少年的手中拿着一个破损的铭牌");
    	Slowsay("铭牌上的字迹很诡异,但写着熟悉的内容:");
    	Slowsay("【22-08-03...】");
    	Slowsay("“你的......”");
    	Slowsay("妹子神色复杂的看了你一眼");
    	Slowsay("“我们是一类人......”");
    	Slowsay("“现在,让我把你带出去吧。”");
    	if(qxs==1&&swx==0)
    	{
    		tg2();
    		return 0;
    	}
    	else
    	{
    		Slowsay("一股强烈的撕扯感出现到了你身上");
    		if(swx==1) Slowsay("此时的你,是如此渴望着死亡与结局\n你大笑着张开双臂,迎接了死亡。");
    		else Slowsay("此时的你并不能接受如此巨大的伤害"),Slowsay("你死了。");
    		Slowsay("Bad End      14");
    		if(hjj[14]==0)
    			Slowsay("进阶线索-----外面的世界");
    		hjj[14]=1;
    		s++;
    	}Sleep(1000);
    }
    
    int bd6()
    {
    	system("cls");
    	Slowsay("你感觉到自己正在变异,");
    	Slowsay("意识开始逐渐模糊起来");
    	Slowsay("你的肚子正无比渴望着食物,你啃噬着触及的一切!");
    	Slowsay("但是不够,你的身躯饿得干枯,你甚至开始食用自己的躯体!");
    	Slowsay("接着,你眼前一黑,再也没有醒来......");
    	s++;
    	hjj[6]=1;
    	Slowsay("Bad End      6");Sleep(1000);
    }
    
    int bd3()
    {
    	system("cls");
    	char ch;
    	Slowsay("长久的等待终于让你失去了理智,你疯了。\n");
    	Slowsay("Bad End   3\n");
    	hjj[3]=1;Sleep(1000);
    	if(mp==-1)
    	{
    		Slowsay("当政府的救援队打开你家的门时,你嘶吼着扑了上去");
    		if(zd>0)
    			Slowsay("他们试图将你击毙,却被你提前一枪击倒");
    		else
    		{
    			Slowsay("你被他们击毙了");
    			Slowsay("Bad End       12");
    			s++;
    			hjj[12]=1;
    			return 0;
    		}
    		Slowsay("你如同一个熟练的猎手,狩猎着救援队");
    		Slowsay("当他们全部死去后,你开始享用起你的大餐");
    		Slowsay("Bad End           13");
    		if(by==0)
    			Sleep(2000),Slowsay("进阶线索-----早已变异!·本我"),by=1;
    		hjj[13]=1;
    		return 0;
    	}
    	s++;
    }
    int bd7()
    {
    	s++;
    	system("cls");
    	Slowsay("你,被狗咬死了");
    	Slowsay("Bad End      7");
    	hjj[7]=1;Sleep(1000);
    }
    
    int bd15()
    {s++;
    	Slowsay("你发现这笔迹有些不对");
    	Slowsay("就好像是新写上去的一样");
    	Slowsay("认字迹的话,好像还十分熟悉");  Sleep(1000);
    	Slowsay("正当你想的入迷的时候,你的脖子被咬住了");
    	Slowsay("在死前,你隐约听到了少年的声音,“Again.”");
    	Slowsay("Bad End     15");
    	if(hjj[15]==0)
    	{
    		Sleep(2000);
    		Slowsay("进阶线索-----伪造......");
    	}
    	hjj[15]=1; Sleep(1000);
    }
    int tgg3()
    {
    	system("cls");
    	Slowsay("你杀掉了少年,并吃掉了他的尸体");
    	Slowsay("世界开始崩塌");
    	tg3(); Sleep(1000);
    }
    int bd9()
    {
    	s++;
    	system("cls");
    	Slowsay("诡异的是,当你杀光了跟来的丧尸后,发现地下室里并没有丧尸");
    	Slowsay("这里有的,只是一个穿着白大褂的尸体");
    	Slowsay("在尸体的衣服口袋中,你找到了一个笔记本");
    	Slowsay("****(无法辨认)1号****进展*****永生**");
    	Slowsay("今********,*号诞生了,他比其*****更*");
    	Slowsay("有些不对,*****的发育*****太快***");
    	Slowsay("2号的**被***出有*****强感染性*****");
    	Slowsay("**********************************");
    	Slowsay("***瓶颈,或许我们**应该****活体样本");
    	Slowsay("**,**样本*****失去活性,*****但**在动\n");
    	if(mp==-1)
    	{
    		bd15();
    		return 0;
    	}
    	Slowsay("正当你看的入迷的时候,你的脖子被咬住了");
    	Slowsay("在死前,你隐约听到了少年的声音,“Again.”");
    	Slowsay("Bad End     9");
    	if(hjj[9]==0)
    	{
    		Sleep(2000);
    		Slowsay("获得线索-----实验体·1号和2号");
    	}
    	hjj[9]=1;Sleep(1000);
    }
    
    int tg()
    {
    	system("cls");
    	Slowsay("不知为何,当你走到这里时,感到世界在一瞬间发生了变化");
    	Slowsay("你不知道这个变化发生在那里,你只知道,现在的世界十分违和");
    	Slowsay("或许,这个世界不是真实的");
    	Slowsay("当你的脑中出现了这个的时候,你眼前的世界,蹦塌了");
    	Slowsay("于此同时,大量记忆冲进了你的脑海");
    	Slowsay("不,它们只是回来了,这本身就是你的记忆");
    	Slowsay("他们在一开始被一些虚假的记忆所替换");
    	Slowsay("从记忆中,你得知你此时正在玩一个vr游戏");
    	Slowsay("少年与妹子则是游戏的npc");
    	Slowsay("这款游戏号称有着超强的代入感");
    	Slowsay("你在发售当天就买来玩了");
    	Slowsay("“这游戏真是了不起啊”,你这样想着,“再玩一次吧”");
    	Slowsay("...是啊,没错,这一切只是游戏,游戏。............");Sleep(1000);
    	Slowsay("躺在仓中的你,自始至终,都没有睁开眼。");
    	Slowsay("---------------游戏基础剧情通关-------------");
    	cdd=0;
    	tongguan=1;Sleep(1000);
    }
    int cg()
    {
    	system("cls");
    	Slowsay("你感觉到违和感在不断加深");
    	Slowsay("世界好像不再是真实的");
    	Slowsay("你现在脑中只有一种想法\n");Sleep(1000);
    	Slowsay("活下去!越久越好!!!"); Sleep(1000);
    }
    int cg2()
    {
    	system("cls");
    	system("Color C");
    	Slowsay("违和感在此时已经聚集到了顶峰\n");
    	Slowsay("你的脑中想清楚了一切\n");
    	Slowsay("1.那么,下一步是  杀光他们\n");
    	Slowsay("2.那么,下一步是  团结起来\n");
    	x=read();
    	if(x==1)
    		Slowsay("已立起尸王线flag,接下来,去打通全 15 badend!"),swx=1,qxs=1;
    	else
    		Slowsay("“看来你还是没懂啊......”背后传来冷冷的声音\n\n“ A  G  A  I  N   . ”");
    	system("Color F");Sleep(1000);
    }
    int Swx()
    {
    	system("cls");
    	Slowsay("哈。。。哈。。。哈。。。。。。");
    	Slowsay("我。。。已经完成了。。。");
    	Slowsay("所有的死法。。。我都体验了一遍了。。。");
    	Slowsay("我。。。一直是只丧尸吧。。。");
    	Slowsay("无论被打倒多少次。。。我都会站起来继续。。。");
    	Slowsay("只要是我想通的结局。。。我便一定会通掉它。。。");
    	Slowsay("只要是我想杀的人。。。我便一定会杀死他。。。");
    	Slowsay("只要是我想知道的真相。。。我便一定会知晓它。");
    	Slowsay("我。。。已经不是以前的那个懦弱无能的我了。。。");
    	Slowsay("这一轮。。。我。。。要成为王!!!\n");
    	Slowsay("在实验室中,为首者发出低哑的嘶吼:");
    	Slowsay("所有人员一级戒备!实验,进入最后阶段!!");
    	Slowsay("------------终极剧情-尸王线开启!------------");cdd=0;
    }
    int bd10()
    {
    	system("cls");
    	Slowsay("你发现了另一个基地");
    	Slowsay("弹尽粮绝的你选择加入了他们");
    	Slowsay("之后的每一天都十分单调");
    	Slowsay("外出寻找物资,然后天黑了回家睡觉");
    	Slowsay("应该是这样吗?");
    	Slowsay("也许吧");
    	Slowsay("Bad End     10");
    	hjj[10]=1; Sleep(1000);
    }
    int hd5()
    {
    	Slowsay("没关系的,一切都会过去的");
    	Slowsay("你这样说的");
    	Slowsay("他似乎感觉到了你的善意,一点一点向你靠近");
    	Slowsay("你紧紧的抱住了他");
    	Slowsay("我会保护好你的"); Sleep(1000);
    	Slowsay("Happy End-----跨越物种的gay~");  Sleep(1000);
    }
    int sswj()
    {
    	Save();
    	system("cls");
    	int w=0;
    	mp=0;
    	if(tongguan==1&&zjj[4]==0)
    	{
    		Slowsay("检测到你已通关,是否领取特殊物品\n");
    		Slowsay("1.领取");
    		Slowsay("2.不领取");
    		while(true)
    		{
    			x=read();
    			if(x==1)
    				mp=-1;
    			if(x==2)
    			{
    				td4();
    				return 0;
    			}
    			break;
    		}
    	}
    	else if(tongguan==1)
    	{
    		Slowsay("检测到你已通关,已领取特殊物品\n");mp=-1;
    	}
    	char ch;
    	if(cdd==1)
    	{
    		Slowsay("是否读取存档\n");
    		Slowsay("1.读取\n");
    		Slowsay("2.不读取\n");
    		x=read();
    		if(x==1)
    		{
    			sw=sw1;
    			zd=zd1;
    			sn=sn1;
    			mz=mz1;
    			mp=mp1;
    			goto cddd1;
    		}
    	}
    	system("cls");
    	Slowsay("当丧尸危机爆发时,你正呆在家里\n");if(vv==0) ch=_getch();
    	Slowsay("你有10点物资可以分配到子弹和食物上");
    	if(swx==2) Slowsay("...\n\n但是!不!我已经不会再惧怕食物短缺与丧尸小兵了!\n\n我,应当是世界的王!!\n"),zd=99999,sw=99999;
    	else{if(vv==0) ch=_getch();
    		int x,y;
    		qiang=0;gun=0;zd=0;sw=0;mz=0;mzzd=0;sn=0;mzhg=0;
    		Slowsay("\n请输入你的选择(此次输入需键入回车,例:5 5 )\n");
    		while(true)
    		{
    			scanf("%d%d",&x,&y);
    			zd=x;sw=y;
    			if(x+y!=10||x<0||y<0)
    			{
    				if(x==666666&&y==5201314)
    				{
    					Slowsay("启用秘籍\n");
    					Slowsay("请输入你真正需要的子弹数和食物数(上限:999 )\n");
    					scanf("%d%d",&x,&y);
    					zd=min(x,999);sw=min(y,999);
    					break;
    				}
    				Slowsay("请重新输入\n");
    				w++;
    				if(w>5)
    				{
    					SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
    					Slowsay("行了行了,这只是第一个选择而已\n"),
    					Slowsay("有必要这么皮吗\n"),
    					Slowsay("自动分配食物3个子弹7个\n");
    					if(vv==0) ch=_getch();
    					sw=3,zd=7;
    					break;
    				}
    			}
    			else break;
    		}
    	}
    	Slowsay("你的家里是个较为安全的地方,你可以选择搜索你家的物资或是去邻居家看看\n");
    	if(vv==0) ch=_getch();
    	Slowsay("1.留在家中\n");
    	Slowsay("2.前往邻居家\n");
    	while(true)
    	{
    		x=read();
    		if(x!=1&&x!=2)
    			Slowsay("请重新输入\n");
    		else
    			if(x==1)
    		{if(swx==2) {Slowsay("饿啊!为什么我还呆在家里!!");break;}
    			else {
    				Slowsay("在二楼,你发现了一些食物食物+3\n");
    				if(vv==0) ch=_getch();
    				Slowsay("在家里过了一夜,食物-1\n");
    				sw=sw+2;
    				break;
    			}}
    		else
    		{if(swx==2) {Slowsay("可恶!为什么邻居家里没有人!!");break;}
    			else {
    				Slowsay("在前往邻居家的路上,你遇到了丧尸\n");
    				if(vv==0) ch=_getch();
    				if(zd<1)
    				{
    					Slowsay("你朝他开了一枪,不过枪里没有子弹,你被他咬死了\n");
    					if(vv==0) ch=_getch();
    					hjj[11]=1;
    					Slowsay("Bad End      11\n");
    					s++;
    					if(vv==0) ch=_getch();
    					Slowsay("另外在说一句,一个子弹都不带,还到处乱浪,你是真的作");
    					return 0;
    				}
    				else
    				{
    					Slowsay("你用你手中的枪结束了他的生命,子弹-1\n");
    					zd=zd-1;
    					if(vv==0) ch=_getch();
    					Slowsay("邻居家里不知为何并没有人,你在仔细搜索后发现了一个弹夹,里面有4发子弹\n");
    					zd+=4;
    					if(vv==0) ch=_getch();
    					Slowsay("在邻居家过了一夜后,食物-2\n");
    					sw=sw-2;
    					if(sw<0)
    					{
    						esl();
    						return 0;
    					}
    				}
    				break;
    			}}
    	}
    	if(vv==0) ch=_getch();
    	qp();
    	Slowsay("你回想起这附近有一座商场,你决定\n");
    	if(vv==0) ch=_getch();
    	Slowsay("1.前往商场\n");
    	Slowsay("2.到处乱走\n");
    	Slowsay("3.留在屋子里\n");
    	while(true)
    	{
    		x=read();
    		if(x!=1&&x!=2&&x!=3)
    		{
    			Slowsay("请重新输入\n");
    			continue;
    		}
    		if(swx==2&&x==1) {system("cls"),Slowsay("你循着残存的记忆前往商场,找到了适合你膨胀体型的衣服,可以继续隐藏下去。\n\n"),mz=1;break;}
    		else if(swx==2&&x==2) {system("cls"),Slowsay("你到处乱走,见人即杀,丧尸与人类的血混合着溅满了街道,\n惨叫连连,火光接天,如同末世一般。\n你站在尸山上狂笑,不屑于看那些渺小的灵魂。\n\n然而,你丝毫没有注意,一个娇小的身影远远的看到了你,捂着嘴逃之夭夭。\n\n"),mz=10086;break;}
    		else if(swx==2&&x==3) {system("cls");Slowsay("你如一名老练的猎手忍耐着饥饿,终于等来了敲门声。\n你得意洋洋的屠杀着这送上门来的大餐\n并跟踪着逃兵进入了幸存者基地。\n那一天,残阳似血,为浸染大地的红再镶上一道道金光。\n\n");Sleep(1000);return 0;}
    		else if(x==3)
    		{
    			if(sw<2)
    			{
    				esl();
    				return 0;
    			}
    			Slowsay("无聊正在逐渐消磨你的意志,但你还是坚持了下来。食物-2\n");
    			sw=sw-2;
    			if(vv==0) ch=_getch();
    			Slowsay("之后的每一天你都是这样,独自一人在家中等待救援\n");
    			if(vv==0) ch=_getch();
    			Slowsay("在过了好久之后\n");cout<<mp;
    			if(sw<6)
    			{
    				esl();
    				return 0;
    			}
    			x=rand()%2;
    			if(x==1&&mp==0) {hd1();return 0; }
    			else {bd3();return 0;}
    		}
    		else if(x==2)
    		{
    			int xx=rand()%3;
    			if(xx!=0)
    			{
    				Slowsay("在到处乱走的过程中,你遇到了来自世界各地的丧尸,子弹-2\n");
    				if(zd<2)
    				{
    					mzd();
    					return 0;
    				}
    				zd=zd-2;
    			}
    			else
    			{
    				Slowsay("在到处乱走的过程中,你走入了一处曾为战场的废墟\n");
    				if(vv==0) ch=_getch();
    				Slowsay("你循着硝烟味,终于找到了军队残留的弹药箱,子弹+6\n");
    				zd+=6;
    			}
    			break;
    		}
    		else if(x==1)
    		{
    			if(zd<4)
    			{
    				mzd();
    				return 0;
    			}
    			Slowsay("在前往商场的过程中,你遇到了丧尸,子弹-4\n");
    			zd=zd-4;
    			if(vv==0) ch=_getch();
    			Slowsay("你在商场发现了食物与子弹,食物+3,子弹+2\n");
    			sw=sw+3;zd=zd+2;
    			break;
    		}
    	}
    	if(mz!=10086)
    	{Slowsay("你在回家的路上发现了一个女幸存者\n");
    		if(vv==0) ch=_getch();
    		Slowsay("她试图向你讨要食物,你的选择是\n");
    		Slowsay("1.不给\n");
    		Slowsay("2.给她2份食物\n");
    		Slowsay("3.给她2份子弹\n");
    		Slowsay("4.给她一枪\n");
    		while(true)
    		{
    			x=read();
    			if(x<1||x>4)
    			{
    				Slowsay("请重新输入。\n");
    				continue;
    			}
    			if(x==1)
    			{
    				Slowsay("妹子生气的走了。\n");
    				if(vv==0) ch=_getch();
    			}
    			if(x==2)
    			{
    				if(sw<2)
    				{
    					Slowsay("食物不足\n");
    					continue;
    				}
    				sw=sw-2;
    				mzhg++;
    				Slowsay("你的食物-2,妹子好感度+1\n");
    				if(vv==0) ch=_getch();
    			}
    			if(x==3)
    			{
    				if(zd<2)
    				{
    					Slowsay("子弹不足\n");
    					continue;
    				}
    				mzzd=1;
    				Slowsay("你给了妹子两份子弹,妹子离开了\n"),zd=zd-2;
    				if(vv==0) ch=_getch();
    			}
    			if(x==4)
    			{
    				if(zd<1)
    				{
    					Slowsay("子弹不足\n");
    					continue;
    				}
    				zd=zd-1;
    				Slowsay("你一枪杀死了妹子,并从她的尸体上找到了4份食物\n");
    				sw=sw+4;
    				mzhg=-1;
    				if(swx==2) Slowsay("你吃掉了妹子的尸体,真是人间佳肴!\n"),mzhg=-10086;
    			}
    			if(swx==2&&x!=4) Slowsay("你看着妹子的背影在心中狂笑\n"),mzhg=10086;
    			break;
    		}}
    	Slowsay("又过了一夜,你的食物-2\n");
    	if(vv==0) ch=_getch();
    	qp();
    	sw=sw-2;
    	if(sw<0)
    	{
    		esl();
    		return 0;
    	}
    	if(mzhg==1) Slowsay("那个妹子又来找到了你,并邀请你加入他们的幸存者基地\n");
    	else Slowsay("你在附近发现了一个幸存者基地\n");
    	if(swx!=2){
    		Slowsay("在前往基地的途中,你遇到了丧尸\n");
    		Slowsay("你且战且退,大量丧尸把你逼进了一家商店\n");
    		Slowsay("门口的丧尸越来越多,你选择\n");
    		Slowsay("1.杀出去\n");
    		Slowsay("2.守在这\n");
    		while(true)
    		{
    			x=read();
    			if(x<1||x>2)
    			{
    				Slowsay("请重新输入\n");
    				continue;
    			}
    			if(x==1)
    			{
    				int res=0;
    				if(mzhg>0)
    					res=1;
    				else res=3;
    				if(zd<res)
    				{
    					mzd();
    					return 0;
    				}
    				zd=zd-res;
    				printf("你消耗了一些子弹冲了出去,子弹-%d\n",res);
    				if(mzzd==1&&mp==-1)
    				{
    					Slowsay("妹子在她杀死的丧尸的尸体上找到了许多物资,子弹+7,食物+3\n");
    					zd=zd+7;sw=sw+3;
    					mz=1;
    					break;
    				}
    				x=rand()%5;
    				if(res==1&&x!=3)
    					Slowsay("妹子为了帮你突围,被丧尸咬到,然后自杀了。\n"),mzhg=-1;
    				if(x==3&&res==1)
    				{
    					td3();
    					return 0;
    				}
    			}
    			else
    				if(x==2)
    			{
    				if(zd<5)
    				{
    					mzd();
    					return 0;
    				}
    				zd=zd-5;
    				Slowsay("你守在这家商店里直到杀死了所有找来的丧尸,子弹-5\n");
    				if(mzhg==1)
    				{
    					Slowsay("妹子在商店中发现了一把无限子弹的枪,子弹+10086\n");
    					zd=10086;
    					if(vv==0) ch=_getch();
    					Slowsay("但是妹子在翻找货架的时候被沾了丧尸血的货架划伤\n");
    					Slowsay("妹子自杀了\n");
    					mzhg=-1;
    				}
    			}
    			break;
    		}}
    	if(vv==0) ch=_getch();
    	qp();
    	Slowsay("你来到了这个幸存者基地\n");
    	if(mz==10086) {system("cls");Slowsay("人们在一位年轻首领的带领下顽强的与你战斗\n每个人都在尽自己的努力去守卫基地\n哪怕战友们一个个倒下\n哪怕首领被你愤怒的捏爆脑袋\n没有一个人放弃战斗,没有一个人抛弃希望\n\n最后,奇迹出现了\n\n在基地的废墟中,你的尸体沉重的倒下。\n\n");s++;Sleep(1000);return 0;}
    	Slowsay("这个基地的首领表示可以用子弹交换你手中的食物\n");
    	printf("你还有%d份食物,%d份子弹\n",sw,zd);
    	if(vv==0) ch=_getch();
    	Slowsay("请输入你需要的子弹数(0-9)\n");
    	while(true)
    	{
    		x=read();
    		if(x<0||x>sw)
    		{
    			Slowsay("请重新输入\n");
    			continue;
    		}
    		sw=sw-x;
    		zd=zd+x;
    		if(x>=1)
    		{
    			Slowsay("首领很开心你能提供稀缺的食物,多给了你1份子弹\n");
    			zd=zd+2;
    		}
    		break;
    	}
    	if(vv==0) ch=_getch();
    	qp();
    	Slowsay("又过了一天,食物-2");
    	sw=sw-2;
    	if(sw<0)
    	{
    		esl();
    		return 0;
    	}
    	if(vv==0) ch=_getch();
    	system("cls");
    	Slowsay("基地首领希望你加入这个基地\n");
    	Sleep(500);
    	Slowsay("你的选择是\n");
    	Sleep(500);
    	system("Color C");
    	Slowsay("1.留在这");
    	Slowsay("2.离开");
    	while(true)
    	{
    		x=read();
    		if(x<1||x>2)
    		{
    			Slowsay("请重新输入\n");
    			continue;
    		}
    		system("Color F");
    		if(swx==2&&x==1){system("cls");Slowsay("在一个月黑风高的夜里,你终于忍不住袭击了营地。\n年轻首领被你梦中封喉。\n人们顽强的与你战斗\n每个人都在尽自己的努力去守卫基地\n没有一个人放弃战斗,没有一个人抛弃希望\n但是他们失败了。\n在基地的废墟中,英雄们的尸体沉重的倒下。\n\n而你狂笑着吞噬着一切。\n\n");Sleep(1000);return 0;}
    		else if(x==1)
    		{
    			if(mzhg>-1) hd2();
    			else hd3();
    			return 0;
    		}
    		else if(x==2)
    		{
    			Slowsay("你决定\n");
    			Slowsay("1.当天离开\n");
    			Slowsay("2.再停留一天\n");
    			while(true)
    			{
    				x=read();
    				if(x<1||x>2)
    				{
    					Slowsay("请重新输入\n");
    					continue;
    				}
    				if(x==1) break;
    				if(x==2)
    				{
    					if(vv==0) ch=_getch();
    					qp();
    					Slowsay("这个基地的首领表示可以用子弹交换你手中的食物\n");
    					printf("你还有%d份食物,%d份子弹\n",sw,zd);
    					if(vv==0) ch=_getch();
    					Slowsay("请输入你需要的子弹数\n");
    					while(true)
    					{
    						x=read();
    						if(x<0||x>sw)
    						{
    							Slowsay("请重新输入\n");
    							continue;
    						}
    						sw=sw-x;
    						zd=zd+x;
    						if(x>=3)
    						{
    							Slowsay("首领很开心你能提供稀缺的食物,多给了你3份子弹\n");
    							zd=zd+3;
    						}
    						break;
    					}
    					sw=sw-2;
    					if(sw<0)
    					{
    						esl();
    						return 0;
    					}
    					Slowsay("又过了一夜,食物-2\n");
    				}
    				break;
    			}
    			Slowsay("在你离开的时候,一个少年跑了过来。\n");
    			Slowsay("他说,他想要和你一起走\n");
    			Slowsay("1.带上他\n");
    			Slowsay("2.不带他\n");
    			while(true)
    			{
    				x=read();
    				if(x<1||x>2)
    				{
    					Slowsay("请重新输入\n");
    					continue;
    				}
    				if(x==2)
    				{
    					Slowsay("少年生气的离开了");
    					if(swx!=2) Slowsay(",当他走远了,你才发现\n\n在刚刚的接触中,他偷走了你所有的子弹\n");
    					else Slowsay("\n当你走远后,你才发现,少年一直冷笑着跟在你的身后\n"),sn=1;
    					zd=0;
    				}
    				if(x==1)
    				{
    					Slowsay("你选择上少年一起走\n");
    					Slowsay("少年将他身上带着的一份食物交给了你\n");
    					sw=sw+1;
    					Slowsay("食物消耗+1,少年入队\n");
    					sn=1;
    				}
    				break;
    			}
    		}
    		break;
    	}
    	if(vv==0) ch=_getch();
    	qp();
    	printf("你在路边的一座没人的房子里过了一夜,食物-%d\n",2+sn);
    	sw=sw-2-sn;
    	if(vv==0) ch=_getch();
    	if(sn==1&&swx==2)
    	{
    		Slowsay("\n1.杀了少年,这时没人可以阻止你!\n");
    		Slowsay("2.我决定在少年面前一直隐瞒到底\n");
    		x=read();
    		if(x==1){Slowsay("少年不见了,难道他发现了......\n\n你一回头,少年咯咯笑着咬住你的脖子\n\n你应该等我虚弱时再下手啊.....\n\n");s++;return 0;}
    	}
    	if(sw<0)
    	{
    		esl();
    		return 0;
    	}
    	Slowsay("是否存档?\n");
    	Slowsay("1.存档(记录当前进度,只能有一个存档)\n");
    	Slowsay("2.不存\n");
    	x=read();
    	if(x==1)
    	{
    		cdd=1;
    		sw1=sw;
    		zd1=zd;
    		mp1=mp;
    		mz1=mz;
    		sn1=sn;
    		Slowsay("存档成功");
    	}
    	cddd1:
    		qp();
    		if(sn==1)
    		{
    			vv=0;
    			Slowsay("今天一早你就被少年叫醒了,\n");
    			if(vv==0) ch=_getch();
    			Slowsay("他在床底下发现了一箱方便面,食物+8\n");
    			sw=sw+8;
    			Slowsay("少年向你讨要武器,你决定\n");
    			Slowsay("1.把枪给他\n");
    			Slowsay("2.把捡到的水管给他\n");
    			Slowsay("3.什么都不给他\n");
    			while(true)
    			{
    				x=read();
    				if(x<1||x>3)
    				{
    					Slowsay("请重新输入\n");
    					continue;
    				}
    				if(x==1) gun=0,qiang=2;
    				if(x==2) gun=2,qiang=1;
    				if(x==3) gun=0,qiang=1;
    				break;
    			}
    		}
    		else
    		{
    			Slowsay("你在冰箱里发现了几包巧克力\n");
    			if(vv==0) ch=_getch();
    			Slowsay("希望它们还没过期吧,食物+3\n");
    			sw=sw+3;
    		}
    		if(vv==0) ch=_getch();
    		Slowsay("今天你们来到了一家大商场\n");
    		Slowsay("你决定\n");
    		Slowsay("1.独自探索1楼\n");
    		Slowsay("2.独自探索2楼\n");
    		if(sn==1)
    		{
    			Slowsay("3.和少年一起探索2楼");
    		}
    		while(true)
    		{
    			x=read();
    			if(x<1||x>3)
    			{
    				Slowsay("请重新输入\n");
    				continue;
    			}
    			if(x==1)
    			{
    				Slowsay("你在一楼发现了一些子弹,子弹+3\n");
    				zd=zd+3;
    				Slowsay("奇怪的是,一只丧尸都没有看到\n");
    				if(vv==0) ch=_getch();
    				if(sn>0)
    				{
    					if(qiang==2)
    					{
    						Slowsay("当你来到二楼时,发现了一地尸体\n");
    						Slowsay("少年就倒在这尸体中间,他死前手还紧紧握着枪\n");
    						Slowsay("你把枪拿了回来,并在少年的尸体下面发现了一箱压缩饼干\n");
    						Slowsay("食物+10086\n");
    						if(vv==0) ch=_getch();
    						sw=10086;
    						if(sw>10000&&zd>9000)
    						{
    							td();
    							return 0;
    						}
    						sn=0;
    						qiang=1;
    					}
    					else
    					{
    						Slowsay("当你来到二楼时,发现了少年的尸体\n");
    						if(vv==0) ch=_getch();sn=0;
    						Slowsay("你紧紧握着手中的枪,猛地一回头\n");
    						Slowsay("四周大量的丧尸向你涌来\n");
    						if(vv==0) ch=_getch();
    						zd=zd-5;
    						if(zd<0)
    						{
    							mzd();
    							return 0;
    						}
    						Slowsay("你杀光了这些丧尸,子弹-5\n");
    						if(vv==0) ch=_getch();
    						Slowsay("你在二楼找到了食物,食物+3\n");
    						sw+=3;
    					}
    				}
    			}
    			if(x==2)
    			{
    				Slowsay("你来到了二楼,数之不尽的丧尸忽然从阴影中窜出\n");
    				if(qiang==2)
    				{
    					Slowsay("尽管你没了枪也尽力抵抗,可丧尸的数量实在太多。\n");
    					mzd();
    					return 0;
    				}
    				if(vv==0) ch=_getch();
    				zd-=5;
    				if(zd<0)
    				{
    					Slowsay("尽管你尽力抵抗,可丧尸的数量实在太多。\n");
    					mzd();
    					return 0;
    				}
    				Slowsay("你杀光了这些丧尸,子弹-5\n");
    				if(vv==0) ch=_getch();
    				Slowsay("你在二楼找到了食物,食物+3\n");
    				sw+=3;
    				if(sn==1)
    				{
    					Slowsay("少年在一楼找到了子弹,子弹+3\n");
    					zd=zd+3;
    				}
    			}
    			if(x==3&&sn==1)
    			{
    				system("cls");
    				Slowsay("你们来到了二楼\n");
    				if(vv==0) ch=_getch();
    				system("Color C");
    				Slowsay("数之不尽的丧尸从阴影中窜出");
    				Slowsay("尽管你们尽力抵抗,可丧尸的数量实在太多。");
    				if(gun!=2&&qiang!=2)
    				{
    					Slowsay("没有武器的少年被当场咬死。");
    					if(mp==-1&&mz==0)
    					{
    						td5();
    						return 0;
    					}
    					sn=0;
    				}
    				Slowsay("其中一只丧尸趁你不注意冲到了你的旁边");
    				if(gun==2) Slowsay("就在你要被咬死的时候,少年扔出了手中的水管\n,救下了你");
    				else if(qiang!=2)
    				{
    					zd=zd-3;
    					if(zd<0)
    					{
    						mzd();
    						return 0;
    					}
    					Slowsay("你赶忙回头几枪补掉了这只丧尸,子弹-3");
    				}
    				zd=zd-3;
    				if(qiang==2||zd<0)
    				{
    					system("Color F");
    					mzd();
    					return 0;
    				}
    				system("Color F");
    				Slowsay("经过了一番苦战,你们终于战胜了所有丧尸,子弹-3");
    				if(vv==0) ch=_getch();
    			}
    			break;
    		}
    		if(vv==0) ch=_getch();
    		qp();
    		if(vv==0) ch=_getch();
    		printf("又过了一夜,食物-%d\n",sn+2);
    		sw=sw-2-sn;
    		if(sw<0)
    		{
    			esl();
    			return 0;
    		}
    		qp();
    		Slowsay("今天在出门的时候\n");
    		Slowsay("你遇到了一条流浪狗\n");
    		Slowsay("1.用枪打死它\n");
    		Slowsay("2.用食物打发它\n");
    		while(true)
    		{
    			x=read();
    			if(x<1||x>2)
    			{
    				Slowsay("请重新输入\n");
    				continue;
    			}
    			if(x==1)
    			{
    				zd=zd-1;
    				if(zd<0)
    				{
    					bd7();
    					return 0;
    				}
    				Slowsay("你一枪打死了这条狗,子弹-1\n");
    				if(sn==0) break;
    				Slowsay("在打死了狗之后,你忽然发现少年的脸色不太好\n");
    				if(vv==0) ch=_getch();
    				Slowsay("原来,在昨天的商场中,少年早就被咬了一口");
    				Slowsay("他一直瞒着你,不敢说出来");
    				Slowsay("此时,他闻到了血腥味,看到了尸体,已经忍不住,濒临变异了!!");
    				Slowsay("你决定\n");
    				Slowsay("1.杀了他\n");
    				Slowsay("2.不杀他\n");int a3=0;
    				if(gjj[4]==1&&zd<4)
    				{
    					Slowsay("3.安抚他\n");a3=1;
    				}
    				while(1)
    				{
    					x=read();
    					if(x<1||x>3||(x==3&&a3==0))
    					{
    						Slowsay("请重新输入\n");
    						continue;
    					}
    					if(x==1)
    					{
    						if(swx==2)
    						{
    							if(mzhg<-1000) tgg3();
    							else Slowsay("\n“杀我还早的很呢......”\n\n少年咯咯笑着挡下了你所有的攻击\n\n“因为你还不是一个优秀的丧尸......”"),Sleep(1000),mzd();
    							return 0;
    						}
    						if(vv==0) ch=_getch();
    						if(mp==-1&&mz==0)
    						{
    							Slowsay("奇怪的是,你直接秒掉了他。\n");Sleep(1000);
    							sn=0;
    							td5();
    							return 0;
    						}
    						else if(mp==-1&&mz!=0)
    						{
    							Slowsay("突然,妹子出现了。\n");
    							Slowsay("“放着我来!”,妹子与少年搏斗起来,妹子的力气极大,竟然真的压制住了少年!\n");
    							Slowsay("在你的惊恐目光下,少年的皮肤渐渐变淡,重新变回了“人”!\n");
    							Slowsay("这时,你才注意到少年的声音一直带着点沙哑,如同低吼一般\n");
    							Slowsay("“我没事。”他说。\n");
    						}
    						else
    						{
    							system("Color C");
    							Slowsay("你试着向他开枪,子弹穿过了他的身体\n");
    							Slowsay("你十分惊恐,疯狂地倾泻着手中的弹药\n");
    							Slowsay("“没有用的。”少年咯咯笑着向你走进,\n");
    							Slowsay("而他的伤口却以肉眼可见的速度愈合!\n");
    							Slowsay("怎么可能!怎么可能,怎么可能......\n");
    							system("Color F");
    							mzd();
    							if(zjj[9]==0)
    							{
    								Slowsay("获得线索-----无敌变异!·少年\n");Sleep(1000);
    								zjj[9]=1;
    							}
    							return 0;
    						}
    					}
    					if(x==2)
    					{
    						system("Color C");
    						Slowsay("你看着少年变异\n");
    						Slowsay("奇怪的是,他变异后并没有像其他的丧尸一样,向你扑过来\n");
    						Slowsay("而是躲在墙角瑟瑟发抖\n");
    						Slowsay("你慢慢的走过去\n");
    						Slowsay("就在你走近的时候,少年突然暴起\n");
    						Slowsay("狠狠地咬住了你的手臂\n");
    						Slowsay("你赶忙用枪打死他,可是为时已晚\n");
    						system("Color F");
    						sn=0;
    						if(sw>=6){td2();return 0;}
    						else{bd6();return 0;}
    					}
    					break;
    				}
    				if(x==3&&gjj[4]==1)
    				{
    					gjj[5]=1;
    					hd5();
    					return 0;
    				}
    			}
    			if(x==2)
    			{
    				sw=sw-1;
    				if(sw<0){bd7();return 0;}
    				Slowsay("你用一份食物引开了这条狗,食物-1\n");
    			}
    			break;
    		}if(swx==2)
    		{system("cls");if(sn==1) Slowsay("少年的变异的很突然,但身为丧尸的你没有受到攻击\n你们结伴一起狩猎着人类\n只是,与少年相处的越久,你就越发感受到他的强大。\n你只好收起杀心跟在他后面。\n应该是这样吗?"),Sleep(1000),Slowsay("\n\n“我错过了机会”\n");
    			else Slowsay("少年死后,你无聊的屠杀着一切,\n在接下来的几天里,你轻松的杀掉了城中所有的生物\n之后,你只能天天游荡,无助的面对着这座死城\n应该是这样吗?\n"),Sleep(1000),Slowsay("\n“我走错了路。”");
    			Sleep(1000);return 0;}
    		if(vv==0) ch=_getch();
    		if(sn==1&&sw>=4&&gun==2&&zd>5){hd4();return 0;}
    		if(sn==1)
    		{
    			Slowsay("又过了一天,食物-2\n");
    			sw=sw-2;
    			if(sw<0){esl();return 0;}
    			if(vv==0) ch=_getch();
    			system("cls");
    			Slowsay("今天早上,你发现少年不见了\n");
    			Slowsay("你决定\n");
    			Slowsay("1.去寻找他\n");
    			Slowsay("2.不去找他\n");
    			while(true)
    			{
    				x=read();
    				if(x<1||x>2)
    				{
    					Slowsay("请重新输入\n");
    					continue;
    				}
    				if(x==1)
    				{
    					system("cls");qp();
    					Slowsay("你通过蛛丝马迹一路追踪,来到了一座大厦前\n");
    					Slowsay("在路上,你遭遇了丧尸,子弹-2\n");
    					zd=zd-2;
    					if(zd<0)
    					{
    						mzd();
    						return 0;
    					}
    					Slowsay("你决定\n");
    					system("Color C");
    					Slowsay("1.破门!冲入大厦\n");
    					Slowsay("2.悄悄开门,潜入大厦\n");
    					Slowsay("3.寻找其它的入口\n");
    					while(true)
    					{
    						x=read();
    						if(x<1||x>3)
    						{
    							Slowsay("请重新输入\n");
    							continue;
    						}
    						if(x==1)
    						{
    							int xx=rand()%4;
    							Slowsay("你进入大厦才发现这里几乎充满了丧尸!");
    							Slowsay("丧尸似乎被你惊醒,如同海啸般向你涌来!");
    							system("Color F");
    							if(zd>6) Slowsay("怎么回事!!你一路且战且退来到了地下室"),zd-=6,bd9();
    							else if(xx==0) Slowsay("幸运的是,你退后的脚碰到了地下室的暗门,Thanks God!"),bd9();
    							else Sleep(1000),mzd();
    							return 0;
    						}
    						if(x==2)
    						{
    							int xx=rand()%6;
    							Slowsay("你进入大厦才发现这里几乎充满了丧尸!");
    							system("Color F");
    							Slowsay("怎么回事!!你害怕得定在原地,奇怪的是它们并没有向你扑来,只是疲惫的看着你。");
    							Slowsay("定睛一看,丧尸们个个躯体畸形,断手断脚者不乏其数");
    							Slowsay("再一看,这些丧尸们被奇怪的机器束缚,不得踏出大厦一步。");
    							Slowsay("你大着胆子靠近一个丧尸,发现它的头上有着模糊的字迹");
    							Slowsay("【21.7.29,失败】");Sleep(1000);
    							Slowsay("瞬间,那个丧尸惊恐地捂住头上的字,发出奇怪的吼声!");
    							Slowsay("其它丧尸如同被激怒,海啸般向你涌来!");
    							if(zd>6) Slowsay("怎么回事!!你一路且战且退来到了地下室"),zd-=6,bd9();
    							else if(xx==0) Slowsay("幸运的是,你退后的脚碰到了地下室的暗门,Thanks God!"),bd9();
    							else Sleep(1000),mzd();
    							return 0;
    						}
    						if(x==3)
    						{
    							system("Color F");
    							Slowsay("你走入刚刚的大街,你的老相识开心地吐着舌头看着你");
    							Slowsay("......后面跟着它的一堆朋友......");
    							Slowsay("......你被讨食的狗狗们追着跑过了两条大街,不停地扔出食物来减缓它们的攻势......");
    							if(sw>5) Slowsay("终于,它们全部满足的趴倒在了地上。\n领头狗如同可以听懂人话一样,将你带到了一个隐蔽的地道口前......"),sw-=5,bd9();
    							else bd7();
    							return 0;
    						}
    						break;
    					}
    				}
    				break;
    			}
    		}
    		qp();
    		if(vv==0) ch=_getch();
    		if(mz==1&&sn==1&&swx==0){td6();return 0;}
    		Slowsay("又过了一天,食物-2");
    		sw=sw-2;if(sw<0){esl();return 0;}
    		Sleep(500);
    		Slowsay("遭遇丧尸,子弹-3");
    		zd=zd-3;if(zd<0){mzd();return 0;}
    		Sleep(500);
    		Slowsay("又过了一天,食物-2");
    		sw=sw-2;if(sw<0){esl();return 0;}
    		Sleep(500);
    		Slowsay("遭遇丧尸,子弹-2");
    		zd=zd-2;if(zd<0){mzd();return 0;}
    		Sleep(500);
    		if(ccg==1){tg(); return 0;}
    		else{bd10();return 0;}
    }
    int main()
    {
    	srand(time(0));
    	Read();
    	int go=0;
    	while(tongguan1!=2)
    	{
    		int v=0;
    		char ch;
    		mp=0;
    		if(go==1){
    			Sleep(1000);
    			if(vv==0) ch=_getch();
    			system("cls");Save();}go=1;
    		Slowsay("1.进行游戏\n");
    		Slowsay("2.查看成就\n");
    		Slowsay("3.查看线索(获得全部线索后通关游戏)\n");
    		Slowsay("4.获得一条随机的提示\n");
    		Slowsay("5.游戏相关\n");
    		Slowsay("6.极速模式\n");
    		Slowsay("7.退出游戏\n");
    		x=read();
    		if(x==1)
    		{
    			sswj();
    			if(s>50&&swhm==0)
    			{
    				swhm=1;
    				Slowsay("又死了啊......");
    				Slowsay("这已经是第几次了呢......");
    				Slowsay("一个柔和的声音从耳边传来");
    				Slowsay("或许早该放弃了");Sleep(1000);
    				Slowsay("获得线索-----计数者");
    			}
    		}
    		if(x==2)
    		{
    			int v1=0;
    			system("cls");
    			if(tongguan1==2) Slowsay("\n已通关终极剧情\n");
    			if(tongguan1==1) Slowsay("\n已通关进阶剧情(进阶不重要!终极才是王道!)\n");
    			if(tongguan==1) Slowsay("\n已通关基础剧情\n");
    			int v=0;
    			Slowsay("\nHappy Bnd 达成\n");
    			if(gjj[1]==1) Slowsay("苟到最后\n");else Slowsay("未达成\n");
    			if(gjj[2]==1) Slowsay("神仙眷侣\n");else Slowsay("未达成\n");
    			if(gjj[3]==1) Slowsay("英雄不朽\n");else Slowsay("未达成\n");
    			if(gjj[4]==1) Slowsay("认清自己\n");else Slowsay("未达成\n");
    			if(gjj[5]==1) Slowsay("跨越物种的gay\n");else Slowsay("未达成\n");
    			Slowsay("\n");
    			Slowsay("Bad End 达成(共15个)\n");
    			for(int i=1;i<=17;i++)
    				if(hjj[i]==1)
    					printf("%d ",i),v1++;
    			if(v1>=15&&swx==1)
    				swx=2,cdd=0,Swx();
    			Slowsay("\n");
    			printf("当前死亡次数:%d",s);
    			Slowsay("\n");
    			Slowsay("True End 达成\n");
    			if(zjj[1]==1) Slowsay("拯救世界\n");else Slowsay("未达成\n");
    			if(zjj[3]==1) Slowsay("认清?·妹子\n");else Slowsay("未达成\n");
    			if(zjj[2]==1) Slowsay("认清!·本我\n"); else Slowsay("未达成\n");
    			if(zjj[4]==1) Slowsay("验证失败\n");else Slowsay("未达成\n");
    			if(zjj[5]==1) Slowsay("死亡姗姗来迟\n");else Slowsay("未达成\n");
    			Slowsay("\n");
    			if(vv==0) char ch=_getch();
    		}
    		if(x==3)
    		{
    			system("cls");
    			int v=0;
    			Slowsay("基础线索\n");
    			if(zjj[1]==1) Slowsay("    奇特的枪与饼干\n"),v++;else Slowsay("    ?????\n");
    			if(zjj[2]==1) Slowsay("    延迟变异?·少年\n"),v++;else Slowsay("    ?????\n");
    			if(zjj[9]==1) Slowsay("    无敌变异!·少年\n"),v++;else Slowsay("    ?????\n");
    			if(zjj[3]==1) Slowsay("    不变异?  ·妹子\n"),v++; else Slowsay("    ?????\n");
    			if(hjj[8]==1) Slowsay("    早已变异!·妹子\n"),v++; else Slowsay("    ?????\n");
    			if(hjj[9]==1) Slowsay("    实验体·1号和2号\n"),v++; else Slowsay("    ?????\n");
    			if(v>=6&&ccg==0)
    			{
    				Sleep(2000);
    				cdd=0;cg();ccg=1;
    			}
    			Slowsay("进阶线索\n");
    			if(swhm==1) Slowsay("    计数者\n"),v++; else Slowsay("    ?????\n");
    			if(zbbj==1) Slowsay("    乱码,废弃与失联\n"),v++; else Slowsay("    ?????\n");
    			if(by==1) Slowsay("    早已变异!·本我\n"),v++; else Slowsay("    ?????\n");
    			if(hjj[15]==1) Slowsay("    伪造......\n"),v++; else Slowsay("    ?????\n");
    			if(zjj[5]==1) Slowsay("    少年之死\n"),v++; else Slowsay("    ?????\n");
    			if(hjj[14]==1) Slowsay("    外面的世界\n"),v++; else Slowsay("    ?????\n");
    			if(v>=12&&qxs==0)
    			{
    				Sleep(2000);
    				cg2();cdd=0;Sleep(1000);
    				Slowsay("-------- 游戏进阶结局已解锁(快前往达成吧)--------");qxs=1;
    			}
    			if(vv==0) ch=_getch();
    		}
    		if(x==4)
    		{
    			system("cls");
    			int y=rand()%3;
    			if(y==0){Slowsay("【稀有提示】"); x=rand()%14;
    				if(x==0) Slowsay("【稀有结局提示】 试试 0 10 开局!");
    				else if(x==1) Slowsay("【稀有结局提示】 最好的爱总要先错过~");
    				else if(x==2) Slowsay("【剧情提示】 二周目:少年变异后有新剧情!");
    				else if(x==3) Slowsay("【剧情提示】 不变异的妹子总有一天会在营地暴露!再来一遍!");
    				else if(x==4) Slowsay("【剧情提示】 弹尽粮绝之时,变异的少年会记起上辈子的爱情!再来一遍!");
    				else if(x==5) Slowsay("【剧情提示】 第二天,和首领换更多子弹,他会更开心!");
    				else if(x==6) Slowsay("【剧情提示】 在家里等待疯掉?再来一遍!");
    				else if(x==7) Slowsay("【剧情提示】 二周目:再次进入实验室吧!");
    				else if(x==8) Slowsay("【剧情提示】 二周目:神枪手妹子...");
    				else if(x==9) Slowsay("【剧情提示】 二周目:不带子弹!等待救援!");
    				else if(x==10) Slowsay("【通关方式】 二周目:在获得所有线索后前往“外面的世界”。");
    				else if(x==11) Slowsay("【通关方式】 三周目:(都提示这么明显了)吃掉妹子,杀掉少年。");
    				else if(x==12) Slowsay("【线索提示】 死亡很多次后......(有个地方可以刷死亡次数)");
    				else Slowsay("【???】 666666,5201314(会错过一些线索与结局!)");
    			}else{x=rand()%14;
    				if(x==0) Slowsay("加了好感后,妹子有几率不死");
    				else if(x==1) Slowsay("少年喜欢子弹");
    				else if(x==2) Slowsay("乱走有时可以获得子弹");
    				else if(x==3) Slowsay("冲进去活下来几率更大");
    				else if(x==4) Slowsay("分头探商店可以获得更多资源");
    				else if(x==5) Slowsay("有一些结局只能通关后触发");
    				else if(x==6) Slowsay("有一些结局要脸好才能触发");
    				else if(x==7) Slowsay("有一些结局要通其他结局后才能触发");
    				else if(x==8) Slowsay("大多数时候,你认为一个地方没有好结局只是因为你食物/子弹不够");
    				else if(x==9) Slowsay("绝大多数的线索来自结局");
    				else if(x==10) Slowsay("三大重叠剧情线路:普通,进阶,尸王线");
    				else if(x==11) Slowsay("本游戏是一个剧情严谨,人物丰满,细思极恐的好!游!戏!~");
    				else if(x==12) Slowsay("事实证明剧情游戏是最难调的!有Bug一定要去博客说出来啊!(luogu.com.cn/blog/z1e2k3i4/)");
    				else Slowsay("完成目标后,需要在线索,成就界面开启新剧情哦");
    			}
    			if(vv==0) char ch=_getch();continue;
    		}
    		if(x==5)
    		{
    			system("cls");
    			Slowsay("作者:程梓豪\n");
    			Slowsay("改错,调试,搬运,游玩:胎神大大(就是在游戏论坛翻到的宝藏而已emm......)\n");
    		}
    		if(x==6)
    		{
    			system("cls");
    			if(vv==0) vv=1,Slowsay("已开启极速模式");
    			else vv=0,Slowsay("已关闭极速模式");
    		}
    		if(x==7)
    		{
    			system("cls");
    			Slowsay("想退?死吧!!");s++;
    		}
    	}
    	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
    	Slowsay("Thanks for playing......");Sleep(1000);
    	Slowsay("您已通关,我亲爱的 终极丧尸,成功者,杀人机器,你还没杀够吗?......");system("Color C");
    }
    
    
    
    #include<conio.h>
    #include<windows.h>
    #define rint register int 
    #define mmt(a,b) memset(a,b,sizeof(a))
    #define test(x) cout<<#x<<" = "<<x<<endl
    #define made by Polynswin
    #define endl '\n'
    #define enter putchar(endl)
    //#define int long long
    using namespace std;
    const int inf=0x3f3f3f3f,N=5e2+10;
    const int dir_get_dpx[9]={0,0,-1,-1,-1,0,1,1,1},
    		  dir_get_dpy[9]={0,1,1,0,-1,-1,-1,0,1},
    		  item_cht[N] = {-1, 4, 5, 6, 7};
    int mapw, maph, score, cnt, dir;
    int lasts, lasts2, fps, run, vision_radius, startTime, choose=1, Rclick, key, mob_dizzy_time = 4000, shown_dir;
    int item[N], item_len=4;
    vector<int> item_score= {-1, 20, 10, 15, 20},
    			item_color= {-1, 1, 2, 5, 6};
    bool clean_screen = true, enable =false, update_map, custom_map;
    vector<string> item_name={"", "guide", "flash", "bomb", "vision"};
    vector<string> mode_name = 
    {		"",
    		"特殊道具", "迷宫塌方",	"收集钥匙", "爆炸伤害", "怪物追击", 
    		"灯光不足(尚未开放)", "双人对战(尚未开放)", "特殊道具2(尚未开放)",
    };
    double cntttt=3, b_r = 0.75;//blocking_radius
    int debug_cnt = 1,player_speed,mob_speed;
    int last_time[N] = {-1, 0, -5001},
         interval[N] = {-1, 2000, 5000};
    string numball[N] = {" ","①","②","③","④","⑤","⑥","⑦","⑧","⑨"};
    int mode_init[N][N]=
    {
    	{},
    	{-1, 10, 10, 2, 2, 1, 10},
    	{-1, 20, 20, 5, 4, 3, 40} ,
    	{-1, 40, 40, 12, 4, 8, 60},
    	{-1, 100, 100, 100, 10, 20, 100},
    	{-1, 0, 0, 0, 0},
    },
    	mode_item[N][N]=
    {
    	{},
    	{-1, 1, 2, 0, 1},
    	{-1, 3, 5, 3, 2},
    	{-1, 7, 8, 5, 5},
    	{-1, 20, 40, 20, 10},
    	{-1, 0, 0, 0},
    },
    	mode_item_init[N][N]=
    {
    	{},
    	{-1, 1, 1, 1, 0},
    	{-1, 3, 1, 1, 0},
    	{-1, 4, 2, 2, 0},
    	{-1, 0, 3, 3, 1},
    	{-1, 0, 0, 0},
    }
    	;
    bool mode[N];
    string state;
    char ptmap[N][N], mapx[N][N], map2[N][N];
    bool game_over = false, out_of_menu = false;
    bool debug=0,vis[N][N];
    struct pos{
    	int x,y;
    	bool operator == (const pos &a) const
    	{
    		return a.x==x && a.y==y;
    	}
    	bool operator != (const pos &a) const
    	{
    		return a.x!=x || a.y!=y;
    	}
    }p, cam, vision, cam_dp, aim, last_pos, anchor, start, vision2, vision_init;
    pos fa[N][N];
    struct Path{
    	pos ps;
    	bool highlight;
    };
    struct Mob{
    	int x,y,dir;
    	int last_time_dizzy;
    	pos locate;
    	bool chasing;
    };
    char mob_cht = '!',mob_dizzy_cht = '~';
    pos pre[N][N];
    vector<Mob> mob;
    vector<pos> wall, keys;
    vector<Path> path;
    void Color(int a);
    void Setpos(int x,int y);
    void RealSetpos(int x,int y);
    void SlowDisplay(int x,string p);
    void HideCursor();
    void showCursor();
    void win();
    void lose();
    int sprand(int l,int r);
    int pow2(int x){  return x * x;  }
    double _pow2(double x){  return x * x;  }
    double calc_dist(pos a,pos b){	return sqrt( pow2(a.x-b.x) + pow2(a.y-b.y) ); }
    void canvas(pos x,int color,string s){ Setpos(x.x,x.y); Color(color); cout<<s; }
    double set_float(double x,int t){return int(x*pow(10,t))/pow(10,t);}
    void fps_count();
    void paint();
    void button_check();
    void player_check();
    void player_move();
    void game_update();
    void print_menu();
    void enter_menu();
    void enter_custom_choose();
    void enter_game(bool custom);
    void enter_updates();
    void enter_rule();
    void enter_rule_item();
    void enter_rule_mode();
    void data_update();
    void enter_setting();
    void enter_difficulty_setting();
    void enter_mode_setting();
    void generate_item(int idx,int n);
    void generate_mob(int n);
    void generate_block(int n);
    void generate_key(int n);
    void generate_maze();
    string str(int x);
    pos find(pos x);
    void ending_of_game();
    bool join(pos a, pos b);
    bool wall_check(int x);
    bool dfs_get_way(pos cur);
    bool bfs_get_way(pos s);
    bool check_time(int x);
    void mob_move();
    void mob_detect(int i);
    bool detecting_check(pos a,pos b);
    void debug_out(string text);
    bool mob_dizzy(int i);
    bool press(char k,char x){bool res = k == x; if('a'<=x&&x<='z')res|= k == x - 'a' + 'A'; if('A'<=x&&x<='A')res|= k == x - 'A' + 'a';return res; }
    inline void read(int &x);
    inline void ffout(int x);
    inline void ffout(int x,char b);
    void enter_editor();
    void save_map();
    void load_map();
    signed main()
    {
    	//made by Polynswin
    	//部分windows代码 借鉴于胎神 luogu@TSzza 
    	int i,j;
    	srand(time(0));
    	HideCursor();
    	enter_menu();
    	return 0;
    }
    
    
    bool bfs_get_way(pos s)
    {
    	for(rint i=1; i<=maph; ++i)
    		for(rint j=1; j<=mapw; ++j)
    			vis[i][j] = false;
    	queue<pos> q;
    	q.push(s);
    	vis[s.x][s.y] = true;
    	pre[s.x][s.y] = {-1,-1} ;//注:不重置也可以正常run 
    	while(!q.empty())
    	{
    		pos u = q.front();
    		q.pop();
    		for(rint i=1; i<=4; ++i)
    		{
    			int tx = u.x+dir_get_dpx[(i<<1)-1], ty = u.y+dir_get_dpy[(i<<1)-1];
    			if(tx<0 || ty<0 || tx>maph || ty>mapw || vis[tx][ty] || mapx[tx][ty]=='#')continue;
    			vis[tx][ty] = true;
    			pre[tx][ty] = u ;
    			if(mapx[tx][ty] == '*')
    			{
    				pos cur = {tx,ty};
    				while(pre[cur.x][cur.y] != pos({-1,-1}) )
    				{
    					cur = pre[cur.x][cur.y];
    					path.push_back(Path({cur.x,cur.y,false}));
    				}
    				for(rint i=0; i<=(path.size()-1>>1); ++i)
    					swap(path[i],path[path.size()-i-1]);
    				return true;
    			}
    			q.push(pos({tx,ty}));
    		}
    	}
    	return false;
    }
    void edst_clean(int seth,int setw)
    {
    	for(rint i=1;i<=seth;++i)
    		{canvas( {i,0}, 8, "  "); canvas( {i,setw+1}, 8, "  "); }
    	for(rint i=0;i<=setw+1;++i)
    		{canvas( {seth+1,i}, 8, "  "); canvas( {0,i}, 8, "  "); }
    	for(rint i=1; i<=seth; ++i)
    		for(rint j=1; j<=setw; ++j)
    			canvas({i,j},0,"  ");
    	
    }
    void enter_edst_cur2(int seth,int setw,bool *e_mode)
    {
    	
    	int ent = 10, column = 2, cur = 1, len = mode_name.size() ;
    	edst_clean(seth, setw);
    	while(1)
    	{
    		for(rint i=1; i<=len; ++i)		
    		{
    			int tx = 1+(i-1)/column*2, ty = 2 + (i-1)%column*ent;
    			if(cur == i)canvas({tx, ty-1},0, " >");
    			else canvas({tx, ty-1},0, "  ");
    			if(i==len)
    			{
    				canvas({tx,ty},0, "返回上一级");
    				break;
    			}
    			int col=0;
    			if(e_mode[i])col=2;
    			canvas( {tx,ty}, col, mode_name[i]);
    		}
    		char k = getch();
    		if(press(k, 'w'))cur = (cur-1 - column + len) % len + 1;
    		if(press(k, 's'))cur = (cur-1 + column)%len + 1;
    		if(press(k, 'a'))cur = (cur-2 + len) % len + 1;
    		if(press(k, 'd'))cur = cur % len + 1;
    		if(press(k, 'o'))
    			if(cur!=len)e_mode[cur] ^= 1;
    			else break;
    		if(press(k, 27))break;
    	}
    	edst_clean(seth, setw);
    }
    void enter_edcs_setting()
    {
    	
    }
    void enter_editor()
    {
    	int curx = 1,cury = 1, chs = 1;
    	int ct_maph = 10, ct_mapw = 10, tool_len, item_chs = 1;
    	string state = "map";
    	pos ct_start = {0,0}, ct_vision = {10,10},ed_vision = {10,10};
    	int ct_item_init[N] = {-1, 0, 0, 0, 0};
    	char ct_map[N][N];
    	bool ct_mode[N];
    	mmt(ct_mode,false);
    	vector<char> tool_bar = {'1', ' ', '#', '*', 's', '@', (char)mob_cht, (char)item_cht[1]}; tool_len = tool_bar.size() - 1;
    	mmt(ct_map,' ');
    	cam_dp = {7,1};
    	system("cls");
    	update_map = true;
    	while(1)
    	{
    		if(!ct_mode[1]) item_chs = 1;
    		if(update_map)
    		{
    			canvas({-7,1},0, "map width: "+str(ct_mapw)+"    ");
    			canvas({-6,1},0, "map height:"+str(ct_maph)+"    ");
    			
    			for(rint i=0;i<=ct_maph+1;++i)
    				{canvas( {i,-1}, 8, "  "); canvas( {i,ct_mapw+2}, 8, "  "); }
    			for(rint i=-1;i<=ct_mapw+2;++i)
    				{canvas( {ct_maph+2,i}, 8, "▁▁"); canvas( {-1,i}, 8, "▁▁"); }
    				
    			for(rint i=0; i<=ct_mapw+1; ++i)
    				{canvas( {ct_maph+1,i}, 0, "■"); canvas( {0,i}, 0, "■"); }
    			for(rint i=1; i<=ct_maph; ++i)
    				{canvas( {i,0}, 0, "■"); canvas( {i,ct_mapw+1}, 0, "■"); }
    			for(rint i=1;i<=ct_maph;++i)
    			{
    				for(rint j=1;j<=ct_mapw;++j)
    				{
    					Setpos(i,j);
    					if(ct_map[i][j] == '#'){ Color(0); cout<<"■"; }
    					if(ct_map[i][j] == '*'){ Color(8); cout<<"* "; }
    					if(ct_map[i][j] == 's'){ Color(8); cout<<"s "; }
    					if(ct_map[i][j] == '@'){ Color(8); cout<<"^ "; }
    					if(ct_map[i][j] == ' '){ Color(0); cout<<"  "; }
    					if(ct_map[i][j]==mob_cht){ Color(8); cout<<"●";}
    					for(rint k=1;k<=item_len;++k)
    						if(ct_map[i][j] == item_cht[k])
    							{ Color(item_color[k]); cout<<"☆"; }
    				}
    			}
    			for(rint i=1;i<=tool_len; ++i)
    				if( i==chs)canvas({-4,i<<1},0,"↓");
    				else canvas({-4,i<<1},0,"  ");
    			for(rint i=1;i<=tool_len; ++i)
    			{
    				Setpos(-3,i<<1);
    				if(tool_bar[i] == '#'){ Color(0); cout<<"■"; }
    				if(tool_bar[i] == '*'){ Color(8); cout<<"* "; }
    				if(tool_bar[i] == 's'){ Color(8); cout<<"s "; }
    				if(tool_bar[i] == ' '){ Color(3); cout<<"×"; }
    				if(tool_bar[i] == '@'){ Color(8); cout<<"^ "; }
    				if(tool_bar[i]==mob_cht){ Color(8); cout<<"●";}
    				if(i == 7 ){ Color( item_color[item_chs] ); cout<<"☆"; }
    			}
    			for(rint i=1;i<=tool_len; ++i)
    				canvas({-2,i<<1},0,numball[i]);
    //			if(clock()%1000 < 500)canvas({curx,cury},0, "  "); 
    			canvas({curx+1,cury},0, "↑"); 
    		}
    		update_map = false;
    		if(kbhit())
    		{
    			char k =getch();
    			if(state == "map")
    			{
    				if(press(k, 'w'))curx = (curx-2+ct_maph) % ct_maph + 1, update_map = true;
    				if(press(k, 's'))curx = curx%ct_maph + 1, update_map = true;
    				if(press(k, 'a'))cury = (cury-2+ct_mapw) % ct_mapw + 1, update_map = true;
    				if(press(k, 'd'))cury = cury%ct_mapw + 1, update_map = true;
    				
    				if('1'<=k&&k<=tool_len + '0')
    				{
    					if(k == '7' && chs == 7)
    					{
    						if(ct_mode[1]) item_chs = item_chs%item_len + 1;	
    						else item_chs =  1;	
    						tool_bar[7] = item_cht[item_chs];
    					}
    					chs = k - '0'; update_map = true;
    				}
    			}
    			if(press(k, 27))
    			{
    				cam_dp = {7,ct_maph>>1};
    				int setw = 22,seth = 10, cur = 1,len;
    				vector<string> text = {" ", "修改游戏参数", "修改游戏模式", "加载地图", "保存地图", "退出编辑器"};
    				len = text.size() - 1;
    				int column = 2, ent = 14;
    				edst_clean(seth, setw);
    				while(1)
    				{
    					for(rint i=1; i<=len ; ++i)
    					{
    						int tx = 1+(i-1)/column*2, ty = 2 + (i-1)%column*ent;
    						if(cur == i)canvas({tx, ty-1},0, " >");
    						else canvas({tx, ty-1},0, "  ");
    						canvas( {tx,ty}, 0, text[i]);
    					}
    					char k = getch();
    					if(press(k, 'w'))cur = (cur-1 - column + len) % len + 1;
    					if(press(k, 's'))cur = (cur-1 + column)%len + 1;
    					if(press(k, 'a'))cur = (cur-2 + len) % len + 1;
    					if(press(k, 'd'))cur = cur % len + 1;
    					if(press(k, 27))
    					{
    						update_map = true;
    						break;
    					}
    					if(press(k, 'o'))
    					{
    						if(cur == 1)
    						{
    							int cur2 = 1, column2 = 1, len2 = 4;
    							vector<string> text = {"", "迷宫宽度:", "迷宫长度:", "初始视野宽度:", "初始视野长度:"
    								, "初始引导之星数量:", "初始闪现数量:", "初始炸弹数量:", "初始探远星数量:"
    							};
    							vector<int*> value = {NULL, &ct_mapw, &ct_maph, &ct_vision.x, &ct_vision.y};
    							for(rint i=1; i<=item_len; ++i)
    								value.push_back(&ct_item_init[i]);
    							len2 = text.size() - 1;
    							edst_clean(seth, setw);
    							while(1)
    							{
    								for(rint i=1; i<=len2; ++i)
    								{
    									if(i == cur2)canvas({i,2},0 , " >");
    									else canvas({i,2},0 , "  ");
    									canvas({i,3},0 , text[i]);
    									canvas({i,3+text[i].size()/2},0 , str(*value[i]) + "    ");
    								}
    								char k = getch();
    								if(press(k, 27))
    									break;
    								if(press(k, 'w'))cur2 = (cur2-1 - column2 + len2) % len2 + 1;
    								if(press(k, 's'))cur2 = (cur2-1 + column2)%len2 + 1;
    								if(press(k, 'o'))
    								{
    									showCursor();
    									canvas({cur2,3+text[cur2].size()/2},0 , "    ");
    									Setpos(cur2,3+text[cur2].size()/2);
    									cin>>*value[cur2];
    									HideCursor();
    								}
    							}
    							edst_clean(seth, setw);
    						}
    						if(cur == 2) enter_edst_cur2(seth,setw,ct_mode);
    						if(cur == len - 2)
    						{
    							edst_clean(seth, setw);
    							canvas({seth>>1,setw/2-7}, 0, "这会覆盖当前地图编辑,你确定要这么做吗"); 
    							canvas({seth/2+2,setw/2-4}, 0, "确认"); 
    							canvas({seth/2+2,setw/2+4}, 0, "取消"); 
    							bool confirm = 1;
    							while(1)
    							{
    								if(confirm)canvas({seth/2+2,setw/2-5}, 0, " >"), canvas({seth/2+2,setw/2+3}, 0, "  ");
    								else canvas({seth/2+2,setw/2-5}, 0, "  "), canvas({seth/2+2,setw/2+3}, 0, " >");
    								char k =getch();
    								if(press(k, 'a') || press(k, 'd')) confirm ^= 1;
    								if(press(k, 'o'))break;
    							}
    							if(!confirm)
    							{
    								edst_clean(seth, setw);
    								continue;
    							}
    							ifstream in("maze.pm");
    							in>>ct_mapw>>ct_maph>>ct_vision.x>>ct_vision.y;
    							for(rint i=1; i<=item_len; ++i)
    								in>>ct_item_init[i];
    							for(rint i=1; i<=mode_name.size() - 1; ++i)
    								in>>ct_mode[i];
    							for(rint i=1; i<=ct_maph; ++i)
    								for(rint j=1; j<=ct_mapw; ++j)
    								{
    									int x;
    									in>>x;
    									ct_map[i][j]=char(x);
    									if(ct_map[i][j] == 's') ct_start = pos({i,j});
    								}
    							in.close();
    							for(rint i=0; i<=ct_mapw+1; ++i)
    								ct_map[0][i] = ct_map[ct_maph+1][i] = '#';
    							for(rint i=1; i<=ct_maph; ++i)
    								ct_map[i][0] = ct_map[i][ct_mapw+1] = '#';
    							edst_clean(seth, setw);
    							canvas({seth>>1,setw/2-2}, 0, "地图已读取"); 
    							Sleep(2000);
    							break;
    							
    						}
    						if(cur == len - 1)
    						{
    							ofstream out("maze.pm");
    //							out<<ct_mob.size()<<" ";
    //							for(rint i=0; i<mob.size(); ++i)
    //								out<<"{"<<mob[i].x<<","<<mob[i].y<<"} ";
    							out<<ct_mapw<<" "<<ct_maph<<" "<<ct_vision.x<<" "<<ct_vision.y<<endl;
    							for(rint i=1; i<=item_len; ++i)
    								out<<ct_item_init[i]<<" ";
    							out<<endl;
    							for(rint i=1; i<=mode_name.size() - 1; ++i)
    								out<<ct_mode[i]<<" ";
    							out<<endl;
    							for(rint i=1; i<=ct_maph; ++i)
    							{
    								for(rint j=1; j<=ct_mapw; ++j)
    									out<<int(ct_map[i][j])<<" ";
    								out<<endl;
    							}
    							out<<endl;
    							out.close();
    							edst_clean(seth, setw);
    							canvas({seth>>1,setw/2-2}, 0, "地图已保存"); 
    							Sleep(2000);
    							break;
    						}
    						if(cur == len)
    							enter_menu();
    					}
    				}
    				update_map = true;
    				system("cls");
    				cam_dp = {7,1};
    			}
    //			if(press(k, 'q'))
    //			{
    //				if(state == "map")
    //				update_map = true;
    //			}
    		}
    		if(GetAsyncKeyState('O')&0x8000)
    		{
    			if(tool_bar[chs] == 's')
    			{
    				ct_start = {curx,cury};
    				if(ct_map[ct_start.x][ct_start.y] == 's') ct_map[ct_start.x][ct_start.y] = ' ';
    			 } 
    			ct_map[curx][cury] = tool_bar[chs];
    			update_map = true;
    		}
    	}
    }
    void load_map()
    {
    	ifstream in("maze.pm");
    	vector<int*> value = {NULL, &mapw, &maph, &vision_init.x, &vision_init.y};
    	for(rint i=1; i<=item_len; ++i)		
    		value.push_back(&mode_item_init[0][i]);
    	int len = value.size() - 1;
    	for(rint i=1; i<=len; ++i)	in>>*value[i];
    	for(rint i=1; i<=mode_name.size() - 1; ++i)	in>>mode[i];
    	for(rint i=1; i<=item_len ; ++i) item[i] = mode_item_init[0][i];
    //	debug_out(str(mapw));
    //	debug_out(str(maph));
    //	debug_out(str(maph));
    	for(rint i=0; i<=mapw+1; ++i)
    		mapx[0][i] = mapx[maph+1][i] = '#';
    	for(rint i=1; i<=maph; ++i)
    		mapx[i][0] = mapx[i][mapw+1] = '#';
    	for(rint i=1; i<=maph; ++i)
    		for(rint j=1; j<=mapw; ++j)
    		{
    			int x;
    			in>>x;
    			
    //			debug_out(str(i)+" "+str(j)+" "+str(x));
    //			system("pause");
    //			debug_out(str(i)); debug_out(str(j));
    			if(x == '!') mob.push_back(Mob( {i,j,1, 0, {0,0}, false} ));
    			if(x == '#' || x == '*') mapx[i][j] = x;
    			if(x == 's') 
    			{
    				p = pos({i,j});
    				continue;//纪念第一个调了我1个小时的bug,continue 打成 break 了 
    			}
    			bool flag = false;
    			for(rint k=1; k<=item_len; ++k)
    				if(x == item_cht[k])
    				{
    					flag = true;
    					break;
    				}
    			if(flag || x == '@') 
    			{
    				map2[i][j] = x;
    				if(x == '@')
    				{
    					key++;
    					keys.push_back(pos({i,j}));
    				}
    			}
    		}
    //	system("pause");
    	
    }
    void save_map()
    {
    	ofstream out("maze.pm");
    	out<<mob.size()<<" ";
    	for(rint i=0; i<mob.size(); ++i)
    		out<<"{"<<mob[i].x<<","<<mob[i].y<<"} ";
    	out.close();
    	for(rint i=1; i<=maph; ++i)
    	{
    		for(rint j=1; j<=mapw; ++j)
    			out<<int(mapx[i][j])<<" ";
    		out<<endl;
    	}
    	out<<endl;
    	for(rint i=1; i<=maph; ++i)
    	{
    		for(rint j=1; j<=mapw; ++j)
    			out<<int(map2[i][j])<<" ";
    		out<<endl;
    	}
    	out<<endl;
    }
    
    void debug_out(string text)
    {
    //	return;
    	Setpos(++debug_cnt,-20);
    	cout<<text<<"                     ";
    	debug_cnt%=20;
    }
    bool mob_dizzy(int i)
    {
    	return clock()-mob[i].last_time_dizzy <= mob_dizzy_time;
    }
    void mob_move()
    {
    	update_map = true;
    	for(rint i=0;i<mob.size();++i)
    	{
    		if(mob_dizzy(i))continue;
    		mob_detect(i);
    		if(!mob[i].chasing)
    		{
    //			continue;
    			int tx= mob[i].x + dir_get_dpx[mob[i].dir * 2 -1],
    				ty= mob[i].y + dir_get_dpy[mob[i].dir * 2 -1];
    			int t=(mob[i].dir+1)%4+1;
    			vector<int> go_dir = {0,1,2,3,4};
    			
    			go_dir.erase(go_dir.begin()+ (mob[i].dir+1)%4+1 );
    			
    			mob[i].dir = go_dir[sprand(1, go_dir.size()-1)];
    			
    			while(mapx[tx][ty]=='#' && go_dir.size()>1)
    			{
    				int ri=sprand(1, go_dir.size()-1);
    				mob[i].dir = go_dir[ri];
    				tx= mob[i].x + dir_get_dpx[mob[i].dir * 2 -1],
    				ty= mob[i].y + dir_get_dpy[mob[i].dir * 2 -1];
    				go_dir.erase(go_dir.begin()+ ri );
    			}
    			if(mapx[tx][ty]=='#')
    			{
    				mob[i].dir = t;
    				tx= mob[i].x + dir_get_dpx[mob[i].dir * 2 -1],
    				ty= mob[i].y + dir_get_dpy[mob[i].dir * 2 -1];
    				if(mapx[tx][ty]=='#')continue;
    			}
    			mob[i].x= tx; mob[i].y= ty;
    		}
    		else
    		{
    			if(mob[i].locate.x == mob[i].x)
    			{
    				mob[i].y += mob[i].y>p.y ? -1:1 ;
    				continue;
    			}
    			double k = (mob[i].locate.y-mob[i].y)*1.0 / (mob[i].locate.x-mob[i].x) ;
    			double c = -k * mob[i].x + mob[i].y;
    			int ty=mob[i].y + ( (mob[i].y>mob[i].locate.y) ? -1:1 ),
    				tx=mob[i].x + ( (mob[i].x>mob[i].locate.x) ? -1:1 );
    //			debug_out("out");
    			if(_pow2(-k*mob[i].x + ty - c) <= b_r*b_r * ( k*k + 1) && mapx[mob[i].x][ty]!='#')mob[i].y = ty;
    			else if(mapx[tx][mob[i].y]!='#')mob[i].x = tx ;
    		}
    	}
    //	debug_out("move_over");
    }
    bool detecting_check(pos a,pos b,int idx)
    {
    	if(a.x==b.x)
    	{
    		int l=min(a.y,b.y),r=max(a.y,b.y);
    		for(rint i=l; i<=r; ++i)
    			if(mapx[a.x][i]=='#')return false;
    		return true;
    	}
    	//y = kx + c
    	//-kx + y - c = 0
    	double k = (b.y-a.y)*1.0 / (b.x-a.x) ;
    	double c = -k * a.x + a.y;
    	int l=min(a.x,b.x), r=max(a.x,b.x);
    //	debug_out("step1");
    	for(int i=l; i<=r; ++i)
    	{
    //		debug_out("loop");
    		for(int j=k*i + c; j>=min(a.y,b.y) && j<=max(a.y,b.y) ;--j)
    			if(_pow2(-k*i + j - c) <= b_r*b_r * ( k*k + 1))
    			{
    //				canvas({i-cam.x+1,j-cam.y+1}, 0, "@ ");
    				if(mapx[i][j]=='#')return false;
    			}
    			else break; 
    		for(int j=ceil( k*i + c); j>=min(a.y,b.y) && j<=max(a.y,b.y) ;++j)
    			if(_pow2(-k*i + j - c) <= b_r*b_r * ( k*k + 1))
    			{
    //				canvas({i-cam.x+1,j-cam.y+1}, 0, "@ ");
    				if(mapx[i][j]=='#')return false;
    			}
    			else break;
    	}
    	return true;
    }
    void mob_detect(int i)
    {
    //	debug_out("detecting");
    	if(abs(mob[i].x-p.x)+abs(mob[i].y-p.y)>=20)return;
    		if( detecting_check({mob[i].x,mob[i].y}, p, i) )
    		{
    			mob[i].chasing = true;
    //			debug_out("detected");
    			mob[i].locate = p;
    		}
    		else 
    		{
    			
    		if(mob[i].locate.x==mob[i].x && mob[i].locate.y==mob[i].y )mob[i].chasing = false;
    //			vector<int> pb_dir;//possible direction
    //			for(rint j=1;j<=4;++j)
    		}
    		
    		
    	
    //	debug_out("over");
    }
    bool check_time(int x)
    {
    	return clock()-last_time[x] >= interval[x];
    }
    bool dfs_get_way(pos cur)
    {
    	debug_out(str(cur.x)); debug_out(str(cur.y));
    	if(mapx[cur.x][cur.y] == '*')return true;
    	if(vis[cur.x][cur.y])return false;
    	vis[cur.x][cur.y]=true;
    	if(cur.x!=start.x||cur.y!=start.y)path.push_back( Path( {cur, false} ));
    	for(int i=1;i<=4;i++)
    	{
    		int tx=cur.x+dir_get_dpx[i*2-1],ty=cur.y+dir_get_dpy[i*2-1];
    		if(mapx[tx][ty]=='#' || tx<0 || ty<0 || tx>maph || ty>mapw)continue;
    		if(dfs_get_way( {tx,ty} ))return true;
    	}
    	path.pop_back();
    	vis[cur.x][cur.y]=false;
    	return false;
    }
    struct node{
    	int idx;
    	double dis;
    };
    vector<node> t;
    bool cmp(node a, node b){
    	return a.dis<b.dis;
    }
    pos find(pos x)
    {
    	return (fa[x.x][x.y].x == x.x && fa[x.x][x.y].y == x.y) ? x : fa[x.x][x.y] = find(fa[x.x][x.y]);
    }
    bool join(pos a, pos b)
    {
    	pos af = find(a), bf = find(b);
    	if(af.x != bf.x || af.y != bf.y)
    	{
    		fa[bf.x][bf.y]=af;
    		return true;
    	}
    	return false;
    }
    bool wall_check(int x)
    {
    	if(wall.empty())return false;
    	int ax,ay,bx,by;
    	if(wall[x].x&1)ax = wall[x].x, ay = wall[x].y-1, bx = wall[x].x, by = wall[x].y+1;
    	else ax = wall[x].x-1, ay = wall[x].y, bx = wall[x].x+1, by = wall[x].y;
    	if( join( {ax,ay}, {bx,by} ) )
    	{
    //		test(wall[x].x);
    //		test(wall[x].y);
    		mapx[wall[x].x][wall[x].y] = ' ';
    		wall.erase(wall.begin()+x);
    		return true;
    	}
    	wall.erase(wall.begin()+x);
    	return false;
    }
    void generate_maze()
    {
    	
    	mmt(mapx,' ');
    	int tot = 0;
    	wall.clear();
    	for(rint i=1;i<=maph;++i)
    		for(rint j=1;j<=mapw;++j)
    		{
    			fa[i][j] = { i, j };
    			if( i&1 && j&1 )mapx[i][j]=' ',tot++;
    			else mapx[i][j]='#';
    			if( (i&1) ^ (j&1) )wall.push_back(pos( {i,j} ) );
    		}
    	for(rint i=0;i<=maph+1;++i)
    		mapx[i][0]=mapx[i][mapw+1]='#';
    	for(rint i=1;i<=mapw;++i)
    		mapx[0][i]=mapx[maph+1][i]='#';
    	for(rint i=1; i<=tot && !wall.empty(); ++i)
    		while(wall_check( sprand( 0, wall.size()-1 ) ) && !wall.empty());
    	mapx[maph][mapw] = '*';
    	wall.clear();
    	if(mode[5])
    	{
    		for(rint i=1; i<=maph; ++i)
    			for(rint j=1; j<=mapw; ++j)
    				if(mapx[i][j]=='#')wall.push_back(pos({i,j}));
    		for(rint i=1; i<=mode_init[choose][6]; ++i)
    		{
    			int rx=sprand(1,maph),
    				ry=sprand(1,mapw);
    			while(mapx[rx][ry]!='#')rx=sprand(1,maph),ry=sprand(1,mapw);
    			mapx[rx][ry]=' ';
    		}
    	}
    	
    }
    void generate_item(int idx,int n)
    {
    	for(int i=1;i<=n;++i)
    	{
    		int rx=sprand(1,maph),
    			ry=sprand(1,mapw);
    		while(mapx[rx][ry]!=' ' || map2[rx][ry]!=' ')rx=sprand(1,maph),ry=sprand(1,mapw);
    		map2[rx][ry]=item_cht[idx];
    	}
    }
    void generate_mob(int n)
    {
    	for(int i=1;i<=n;++i)
    	{
    		int rx=sprand(1,maph),
    			ry=sprand(1,mapw);
    		while(mapx[rx][ry]!=' ' || map2[rx][ry]!=' ')rx=sprand(1,maph),ry=sprand(1,mapw);
    		mob.push_back(Mob( { rx, ry, 1, 0, {0,0}, false} ));
    	}
    }
    void generate_key(int n)
    {
    	key = n;
    	for(int i=1;i<=n;++i)
    	{
    		int rx=sprand(1,maph),
    			ry=sprand(1,mapw);
    		while(mapx[rx][ry]!=' ' || map2[rx][ry]!=' ')rx=sprand(1,maph),ry=sprand(1,mapw);
    		map2[rx][ry]='@';
    		keys.push_back( pos({rx,ry}) );
    	}
    }
    void generate_block(int n)
    {
    	int ln=sprand(1,n>>1);
    	for(rint i=1;i<=ln;++i)
    	{
    		int ri=sprand(0,path.size()-1);
    		int rx = path[ri].ps.x,ry = path[ri].ps.y;
    		int tot = 0;
    		while(mapx[rx][ry]!=' ' || map2[rx][ry]!=' ')
    		{
    			rx=sprand(1,maph),ry=sprand(1,mapw);
    			if(tot>=1000)break;
    		}
    			if(tot>=1000)break;
    		mapx[rx][ry]= '#';
    	}
    	for(rint i=1;i<=n-ln;++i)
    	{
    		int rx=sprand(1,maph),
    			ry=sprand(1,mapw);
    		while(mapx[rx][ry]!=' ' || map2[rx][ry]!=' ')rx=sprand(1,maph),ry=sprand(1,mapw);
    		mapx[rx][ry]= '#';
    	}
    }
    void game_update()
    {
    	paint();
    	if(clean_screen)
    	{
    		clean_screen = false;
    		system("cls");
    	}
    	for(rint i=1;i<=vision.x;++i)
    		{canvas( {i,0}, 8, "  "); canvas( {i,vision.y+1}, 8, "  "); }
    	for(rint i=0;i<=vision.y+1;++i)
    		{canvas( {vision.x+1,i}, 8, "▁▁"); canvas( {0,i}, 8, "▁▁"); }
    	for(rint i=1; i<=vision.x; ++i)
    		for(rint j=1; j<=vision.y; ++j)
    		{
    			int tx=i+cam.x-1,ty=j+cam.y-1;
    			Setpos(i,j);
    			if(tx<0 || ty<0 || tx>maph+1 || ty>mapw+1 )
    			{
    				Color(0);
    				cout<<"  ";
    				continue;
    			}
    //			Color(0); cout<<"--";
    			if(ptmap[tx][ty]==' '){ Color(0); cout<<"  ";}
    			if(ptmap[tx][ty]==0){ Color(7); cout<<"●";}
    			if(ptmap[tx][ty]==1){ Color(3); cout<<"●";}
    			if(ptmap[tx][ty]==2){ Color(4); cout<<"●";}
    			if(ptmap[tx][ty]==3){ Color(8); cout<<"☆";}
    			if(ptmap[tx][ty]=='#'){ Color(0); cout<<"■";}
    			if(ptmap[tx][ty]=='*'){ if(mode[3]&&key)Color(5);else Color(8); cout<<"* ";}
    			if(ptmap[tx][ty]=='@'){ Color(8); cout<<"^ ";}
    			if(ptmap[tx][ty]==mob_cht){ Color(8); cout<<"●";}
    			if(ptmap[tx][ty]==mob_dizzy_cht){ Color(7); cout<<"●";}
    			if(ptmap[tx][ty]==item_cht[1]){ Color(1); cout<<"☆";}
    			if(ptmap[tx][ty]==item_cht[2]){ Color(2); cout<<"☆";}
    			if(ptmap[tx][ty]==item_cht[3]){ Color(5); cout<<"☆";}
    			if(ptmap[tx][ty]==item_cht[4]){ Color(6); cout<<"☆";}
    		}
    	canvas({-2,0},0,"time = " + str(  (clock()*1.0-startTime)/1000 ) + "  score = "+str(score) + "   fps =" + str(fps)); 
    	canvas({-1,0},0,"x,y = " + str(p.x) + " " + str(p.y) + "   "); 
    	int top=0,cur=0;
    	while(top<item_len)
    	{
    		top++;
    		if(mode[2] && top==1 && !mode[3])continue;
    		if(!mode[1] && top>1)continue;
    		canvas({vision.x+2+cur/2,1+cur%2*6}, 0, item_name[ top ] +" = "+ str(item[top]) + "       ");
    		cur++; 
    	}
    	if(mode[3])canvas({vision.x+2+cur/2,1+cur%2*6}, 0, "key = "+ str(key) ),cur++;
    	if(!check_time(2))
    	{
    //		if(last_pos.x != -1 && (last_pos.x!=cx || last_pos.y!=cy) )canvas({last_pos.x,last_pos.y},0, "   ");
    		string out;
    		if(anchor.x==p.x)
    			if(anchor.y < p.y)shown_dir = 1;
    			else shown_dir = 5;
    		if(anchor.y==p.y)
    			if(anchor.x < p.x)shown_dir = 3;
    			else shown_dir = 7;
    		if(anchor.x<p.x && anchor.y>p.y) shown_dir = 2 ;
    		if(anchor.x<p.x && anchor.y<p.y) shown_dir = 4 ;
    		if(anchor.x>p.x && anchor.y<p.y) shown_dir = 6 ;
    		if(anchor.x>p.x && anchor.y>p.y) shown_dir = 8 ;
    		int cx = p.x - cam.x + 1 + dir_get_dpx[shown_dir], cy = p.y - cam.y + 1 + dir_get_dpy[shown_dir];
    		if(shown_dir == 1)out = "→";
    		if(shown_dir == 5)out = "←";
    		if(shown_dir == 3)out = "↑";
    		if(shown_dir == 7)out = "↓";
    		if(shown_dir == 2)out = "↗";
    		if(shown_dir == 4)out = "↖";
    		if(shown_dir == 6)out = "↙";
    		if(shown_dir == 8)out = "↘"; 
    		if((clock()-last_time[2]) % 1000 < 500) canvas({cx,cy},0, out) ;
    	}
    	else if(shown_dir)shown_dir = 0;
    }
    void player_move()
    {
    	update_map = true;
    	if(GetAsyncKeyState('W')&0x8000)
    	{
    		if(mapx[p.x-1][p.y]!='#' || debug)p.x--;
    		dir=2;
    	}
    	if(GetAsyncKeyState('S')&0x8000  )
    	{
    		if(mapx[p.x+1][p.y]!='#' || debug)p.x++;
    		dir=4;
    	}
    	if(GetAsyncKeyState('A')&0x8000  )
    	{
    		if(mapx[p.x][p.y-1]!='#' || debug)p.y--;
    		dir=3;
    	}
    	if(GetAsyncKeyState('D')&0x8000  )
    	{
    		if(mapx[p.x][p.y+1]!='#' || debug)p.y++;
    		dir=1;
    	}
    	if(maph-vision.x>0)cam.x=min( max(p.x-(vision.x-1 >> 1), 0) , maph-vision.x+2);
    	else cam.x= maph-vision.x+2>>1; 
    	if(mapw-vision.y>0)cam.y=min( max(p.y-(vision.y-1 >> 1), 0) , mapw-vision.y+2); 
    	else cam.y= mapw-vision.y+2>>1; 
    	if(mode[1])
    		for(rint i=3; i>=0 ; --i)
    		{
    			int tx= p.x+dir_get_dpx[dir*2-1]*i, ty= p.y+dir_get_dpy[dir*2-1]*i;
    			if(tx<0 || tx>maph || ty<0 || ty>mapw || mapx[tx][ty]=='#')continue;
    			aim = {tx,ty};
    			break;
    		} 
    }
    void player_check()
    {
    	if(mapx[p.x][p.y] == '*' && (!key || !mode[3])) win();
    	for(rint i=1; i<=item_len ; ++i)
    		if(map2[p.x][p.y]==item_cht[i])
    		{
    			item[i]++;
    			map2[p.x][p.y] = ' ';
    			score += item_score[4];
    			update_map = true;
    		}
    	for(rint i=0; i<mob.size() ; ++i)
    		if(p == pos( {mob[i].x,mob[i].y} ) && !mob_dizzy(i) ) lose();
    	if(map2[p.x][p.y]=='@' && mode[3])
    	{
    		update_map = true;
    		key --;
    		for(rint i=0; i<keys.size(); ++i)
    			if(keys[i].x == p.x && keys[i].y == p.y)
    				keys.erase(keys.begin() + i);
    		map2[p.x][p.y] = ' ';
    	}
    	
    }
    void paint()
    {
    	for(rint i=1;i<=vision.x;++i)
    		for(rint j=1;j<=vision.y;++j)
    		{
    			int tx=i+cam.x-1,ty=j+cam.y-1;
    			if(tx<0 || ty<0 || tx>maph+1 || ty>mapw+1 )
    				continue;
    			ptmap[tx][ty]=mapx[tx][ty];
    		}
    	for(rint i=1;i<=vision.x;++i)
    		for(rint j=1;j<=vision.y;++j)
    		{
    			int tx=i+cam.x-1,ty=j+cam.y-1;
    			if(tx<0 || ty<0 || tx>maph+1 || ty>mapw+1 )
    				continue;
    			if(map2[tx][ty]!=' ')ptmap[tx][ty]=map2[tx][ty];
    		}
    	if(mode[1])ptmap[aim.x][aim.y]=2;
    	for(rint i=0;i<mob.size();++i)
    		if(!mob_dizzy(i))ptmap[mob[i].x][mob[i].y]=mob_cht;
    		else ptmap[mob[i].x][mob[i].y]=mob_dizzy_cht;
    	ptmap[p.x][p.y]=1;
    }
    void button_check()
    {
    	
    	if(kbhit())
    	{
    		char k=getch();
    		if( press( k, 'r') )
    		{
    			update_map = true;
    			Rclick ++;
    			if(Rclick == 1)
    			{
    				last_time[1] = clock();
    				canvas({-3,0}, 0, "Press R again to confirm suicide");
    			}
    			if(Rclick == 2)lose();
    		}
    		if(check_time(1))update_map = true, Rclick = 0,canvas({-2,0}, 0, "                                    ");
    		if(press( k, 'u') && item[1]>0  )
    		{
    			if(mode[3] && key )
    			{
    				double minx = inf;
    				for(rint i = 0; i<keys.size(); ++i)
    					if(minx > calc_dist(keys[i], p) )
    					{
    						minx = calc_dist(keys[i], p);
    						anchor = keys[i];
    					}
    //				debug_out(str(chs.x) + " " + str(chs.y) + " " + str(shown_dir));
    				last_time[2] = clock();
    			}
    			if(!mode[2] && path.size())
    			{
    				t.clear();
    				for(rint i=0;i<path.size();++i)
    					if(!path[i].highlight)t.push_back( node( { i, calc_dist(p,path[i].ps) } ) );
    				sort(t.begin(),t.end(),cmp);
    				int l=t.size();
    				for(rint i=0; i< min(5, l-1 ) ; ++i)
    				{
    					path[t[i].idx].highlight=true;
    					mapx[ path[t[i].idx].ps . x ][ path[t[i].idx].ps . y ] = 3;
    				}
    			}
    			if(!mode[2] || (mode[3] && key)) item[1] --, score += item_score[1],update_map = true;
    		}
    		if(press( k, 'i') && item[2]>0 && mode[1])
    		{
    			update_map = true;
    			p = aim;
    			item[2] --; score += item_score[2];
    		}
    		if(press(k, 'o') && item[3]>0 && mode[1])
    		{
    			update_map = true;
    			for(rint i=0; i<=8 ; ++i)
    			{
    				int tx= aim.x+dir_get_dpx[i],ty= aim.y+dir_get_dpy[i];
    				if(tx==p.x && ty==p.y && mode[4])lose();
    				if(mode[4])
    					for(rint j=0; j<mob.size(); ++j)
    						if( pos({mob[j].x,mob[j].y}) == pos({tx,ty}) )
    							mob[j].last_time_dizzy=clock();
    				if(mapx[tx][ty] == '#'  && (tx>0 && tx<=maph && ty<=mapw && ty>0)	)
    					mapx[ tx ][ ty ] = ' ';
    			}
    			item[3] --; score += item_score[3];
    		}
    	}
    }
    void data_update()
    {
    	run++; cnt++;
    	int calc= -pow2(item[4])/4 + 4*item[4] ;
    	vision2 = {max(vision2.x,calc), max(vision2.y,calc)};
    	vision = {vision2.x+vision_init.x,vision2.y+vision_init.y};
    	fps_count();
    }
    void fps_count()
    {
    	if(clock()-lasts>=1000)
    	{
    		fps=run/ ( (clock()-lasts)*1.0/1000);
    		run=0;
    		lasts=clock();
    	}
    }
    void enter_game(bool custom)
    {
    	game_over = false; key = 0;
    	path.clear(); wall.clear(); mob.clear(); keys.clear();
    	system("cls");
    	startTime=clock();
    	mmt(mapx,' ');	mmt(map2,' '); mmt(item,0); mmt(vis,false);
    	if(!custom)
    	{
    		p= { 1, 1 }; vision_init={ 15, 15 }; vision2 = {-999,-999};
    		data_update();
    		int ttx = vision.x>>1, tty= (vision.y>>1) ;
    		canvas({ttx,tty},0, "世界生成中...");
    		for(rint i=1; i<=item_len ; ++i) item[i] = mode_item_init[choose][i];
    		
    		maph = mode_init[choose][2]; mapw = mode_init[choose][1];
    		maph = maph >> 1 << 1 | 1; mapw = mapw >> 1 << 1 | 1;
    		generate_maze();  
    		
    		canvas({ttx,tty+8},0, "33%");
    		
    		for(rint i=1; i<=item_len ; ++i) 
    		{
    			if(i==1 && !mode[2])generate_item(i,mode_item[choose][i]);
    			if(i!=1 && mode[1])generate_item(i,mode_item[choose][i]);
    		}
    		
    		canvas({ttx,tty+8},0, "45%");
    		
    		bfs_get_way(p);
    		if(mode[2]) generate_block(mode_init[choose][3]);
    		
    		canvas({ttx,tty+8},0, "60%");
    		
    		if(mode[3]) generate_key(mode_init[choose][4]);
    		
    		canvas({ttx,tty+8},0, "85%");
    		
    		if(mode[5]) generate_mob(mode_init[choose][5]);
    		
    		system("cls");
    		canvas({ttx,tty},0, "done!");
    	}
    	else
    	{
    		load_map();
    		vision2 = {-999,-999};
    		bfs_get_way(p);
    //debug_out("1");
    //		dfs_get_way(p);
    	}
    	data_update();
    	for(rint i=0; i<mob.size(); ++i)
    		mob[i].last_time_dizzy = clock();
    	
    	cnt = 0; run = 0; score = 0; mob_speed = 12; shown_dir = 0;	cam_dp={ 4, 20 };
    	player_speed = 8;
    //	save_map();
    //debug_out("1");
    //debug_out("Polynswin")
    	while(!game_over)
    	{
    		update_map = false;
    //		char k =getch();
    //		if(k == 'a') enable ^= 1;
    		if(clock()-lasts2<1000/ ( 60 + 0 ))continue;
    		lasts2=clock();
    		data_update();
    		button_check();
    //debug_out("2");
    		if(game_over)break;
    		if( cnt%player_speed==0) player_move();
    		if( cnt%mob_speed == 0) mob_move();
    		player_check();
    		
    		if(update_map) game_update();
    	}
    	enter_menu();
    }
    void print_menu()
    {
    	canvas( {1,1}, 0, "欢迎来到 多重迷宫 V1.5 ");
    	canvas( {2,1}, 0, "   made by Polynswin ");
    	canvas( {5,2}, 0, "按 Z 进入游戏 ");
    	canvas( {7,2}, 0, "按 C 修改迷宫模式");
    	canvas( {9,2}, 0, "按 Q 查看规则");
    }
    void enter_custom_choose()
    {
    	system("cls");
    	cam_dp = {3,20};
    	ifstream in("level_list.info");
    	vector<string> name = {""};
    	string x;
    	while(in>>x)name.push_back(x);
    	int len = name.size() - 1,cur = 1;
    	while(1)
    	{
    		int curx = 0;
    		for(rint i=1; i<=len; ++i)
    			canvas({curx = curx + 2, 1}, 0, name[i]);
    		
    		for(rint i=1;i<=len;++i)
    			if(cur == i)canvas({i*2,-1},0," ");
    			else canvas({i*2,-1},0,">");
    //		if(1<=cur && cur<=6)
    			
    		char k =getch();
    		if(press( k, 'w'))cur = (cur-1+len-1)%len+1;
    		if(press( k, 's'))cur = cur%len+1;
    		if(press( k, 'o'))
    		{
    			if(cur==1) enter_game(false);
    			if(cur==2) enter_custom_choose();
    			if(cur==3) enter_editor();
    			if(cur==4) enter_setting();
    			if(cur==5) enter_rule();
    			if(cur==6) enter_updates();
    		}
    	}
    	
    }
    void enter_menu()
    {
    	system("cls");
    	cam_dp = {3,20};
    	int len = 6,cur = 1;
    	while(1)
    	{
    		int curx=3;
    		cam_dp = {3,20};
    		canvas({curx,0},0,"多重迷宫 V1.8!!!"); curx += 1;
    		canvas({curx,0},0,"made by Polynswin"); curx += 2;
    		canvas({curx,0},0,"开始游戏"); curx += 2;
    		canvas({curx,0},0,"自定义关卡"); curx += 2;
    		canvas({curx,0},0,"关卡编辑器"); curx += 2;
    		canvas({curx,0},0,"修改迷宫模式"); curx += 2;
    		canvas({curx,0},0,"查看游戏介绍"); curx += 2;
    		canvas({curx,0},0,"更新日志 "); curx += 3;
    		canvas({curx,0},0,"按 W / S 键上下移动"); curx += 1;
    		canvas({curx,0},0,"按 O 键确认"); curx += 1;
    		for(rint i=1;i<=len;++i)
    			canvas({i*2+4,-1},0," ");
    //		if(1<=cur && cur<=6)
    			canvas({cur*2+4,-1},0,">");
    		char k =getch();
    		if(press( k, 'w'))cur = (cur-1+len-1)%len+1;
    		if(press( k, 's'))cur = cur%len+1;
    		if(press( k, 'o'))
    		{
    			if(cur==1) enter_game(false);
    			if(cur==2) enter_custom_choose();
    			if(cur==3) enter_editor();
    			if(cur==4) enter_setting();
    			if(cur==5) enter_rule();
    			if(cur==6) enter_updates();
    		}
    	}
    }
    void enter_setting()
    {
    	int cur = 1, len = 4;
    	while(1) 
    	{
    		cam_dp = {3,20};
    		system("cls");
    		if(1<=cur && cur<=3)
    			canvas({cur*2-1,0},0,">");
    		string text[10]={"",
    			"难度选择",	"模式选择",	"颜色设置(尚未开放)", "UI设置(尚未开放)",
    			"按 W / S 键改位置",	"按 O 键确认",	"按 Q 键退出并保存设置"
    		
    		};
    		for(rint i=1;i<=len+3;i++)
    		{
    			int col=0;
    			canvas({i*2-1,1},col,text[i]);
    		}
    		
    		char k =getch();
    		if(press( k, 'w'))cur = (cur-1+len-1)%len+1;
    		if(press( k, 's'))cur = cur%len+1;
    		if(press( k, 'o'))
    		{
    			if(cur == 1) enter_difficulty_setting();
    			if(cur == 2)enter_mode_setting();
    			if(cur == 3);
    		}
    		if(press( k, 'q'))enter_menu();
    	}
    }
    void enter_mode_setting()
    {
    	system("cls");
    	cam_dp = {3,20};
    	int cur = 1, len = mode_name.size() - 1;
    	while(1) 
    	{
    		system("cls");
    		if(1<=cur && cur<=len)
    			canvas({cur*2-1,0},0,">");
    		for(rint i=1;i<=len;i++)
    		{
    			int col=0;
    			if(mode[i])col=2;
    			canvas({i*2-1,1},col,mode_name[i]);
    		}
    		canvas({ (len+1<<1) - 1, 1}, 0, "按 W / S 键改位置");
    		canvas({ len+1 << 1, 1}, 0, "按 O 键确认");
    		canvas({ len+1 << 1 | 1, 1}, 0, "按 Q 键退出并保存设置");
    		char k =getch();
    		if(press(k, 'w'))cur = (cur-1+len-1)%len+1;
    		if(press(k, 's'))cur = cur%len+1;
    		if(press(k, 'o'))
    		{
    			mode[cur] ^= 1;
    			if(mode[2])mode[1]=1;
    		}
    		if(press(k, 'q'))enter_setting();
    	}
    	
    }
    string str(int x)
    {
    	if(!x) return "0";
    	string res="",res2=".";
    //	int tot = -99;
    //	if(int(x) != x)
    //	{
    //		double cx = x;
    //		while(cx && tot<2)
    //		{
    //			cx = cx - int(cx);
    //			cx = cx * 10;
    //			res2 += int(cx) + '0';	
    //			tot++;
    //		}
    ////		Setpos(0,-10);test(res2);
    //	}
    	int tx=x;
    	while(tx)
    	{
    		res+=tx%10+'0';
    		tx=tx/10;
    	}
    	for(int i=0;i< (res.size()>>1) ;i++)
    	{
    		char t=res[i];
    		res[i]=res[res.size()-i-1];
    		res[res.size()-i-1]=t;
    	}
    	if(res2==".")return res;
    	else return res+res2;
    }
    void enter_updates()
    {
    	int curx=0,len=2;
    	cam_dp = {3,10};
    	system("cls");
    //	canvas({curx,0},0," "); curx += ;
    	canvas({curx,0},0,"V1.5更新"); curx += 2;
    	canvas({curx,0},0,"更新 钥匙收集 模式"); curx += 2;
    	canvas({curx,0},0,"V1.6更新"); curx += 2;
    	canvas({curx,0},0,"修复了一堆显示bug"); curx += 1;
    	canvas({curx,0},0,"优化了游戏算法,反正作者的机房电脑是能在地狱难度\\模式拉满\\视野拉满下也能跑满62fps"); curx += 1;
    	canvas({curx,0},0,"引导之星增添新功能,在钥匙收集模式中,还能显示钥匙大致方位"); curx += 1;
    	canvas({curx,0},0,"新增 怪物追击 模式"); curx += 1;
    	canvas({curx,0},0,"更新 UI"); curx += 2;;
    	canvas({curx,0},0,"V1.7&1.8更新"); curx += 2;
    	canvas({curx,0},0,"新增 自定义关卡&关卡编辑器 模式"); curx += 1;
    	canvas({curx,0},0,"按 Q 键退出");
    	while(1)
    	{
    		char k =getch();
    		if(press(k, 'q')) break;
    	}
    	system("cls");
    }
    void enter_rule_editor()
    {
    	system("cls");
    	while(1)
    	{
    		int curx = 0;
    		cam_dp = {3,20};
    		canvas({curx,0},0,"编辑器上方有工具栏,按下相应数字键切换选中物品,按O键即可在预瞄点处摆放"); curx += 2;
    		canvas({curx,0},0,"箭头上方为你的预瞄点,按WASD键进行上下左右移动"); curx += 2;
    		canvas({curx,0},0,"如果要对地图进行设置,按下ESC进入菜单界面"); curx += 2;
    		canvas({curx,0},0,"大部分界面都可以用ESC退出,同时大部分选项都可以按下O键(注意)确认"); curx += 2;
    		canvas({curx,0},0,"编辑好地图后,别忘了在菜单界面保存地图,会导出至与游戏本体同级地址为maze.pm"); curx += 1;
    		canvas({curx,0},0,"如果想加载地图,可在菜单界面选择加载地图确认,会读入文件maze.pm"); curx += 3;
    		canvas({curx,0},0,"按 Q 键退出");
    		char k =getch();
    		if(press( k, 'q'))return;
    	}
    }
    void enter_rule()
    {
    	int curx=0,cur=1,len=3;
    	
    	while(1)
    	{
    		curx=0;
    		cam_dp = {3,20};
    		system("cls");
    		canvas({curx,0},0,"游戏目标为移动至迷宫位于右下角的终点(符号*)"); curx += 2;
    		canvas({curx,0},0,"按方向键进行上下左右移动"); curx += 2;
    		canvas({curx,0},0,"你拥有道具,需要按下相应的键位使用,使用即可得分"); curx += 2;
    		canvas({curx,0},0,"当你遇到死局时,可双击 R 键紫砂"); curx += 3;
    		canvas({curx,0},0,"查看 道具介绍"); curx += 1;
    		canvas({curx,0},0,"查看 模式介绍"); curx += 1;
    		canvas({curx,0},0,"查看 编辑器介绍"); curx += 2;
    		canvas({curx,0},0,"按 W / S 键上下移动"); curx += 1;
    		canvas({curx,0},0,"按 O 键确认"); curx += 1;
    		canvas({curx,0},0,"按 Q 键退出");
    		for(rint i=1;i<=len;++i)
    			canvas({i+8,-1},0," ");
    		canvas({cur+8,-1},0,">");
    		char k =getch();
    		if(press( k, 'w'))cur = (cur-1+len-1)%len+1;
    		if(press( k, 's'))cur = cur%len+1;
    		if(press( k, 'q'))enter_menu();
    		if(press( k, 'o'))
    		{
    			if(cur==1)enter_rule_item();
    			if(cur==2)enter_rule_mode();
    			if(cur==3)enter_rule_editor();
    		}
    	}
    }
    void enter_rule_mode()
    {
    	system("cls");
    	cam_dp = {3,15};
    	int curx=0;
    	canvas({curx,0},0,"特殊道具: 场上会多出特殊道具"); curx += 2;
    	canvas({curx,0},0,"特殊道具2: 同上"); curx += 2;
    	canvas({curx,0},0,"迷宫塌方:迷宫坍塌,场上会随机出现方块"); curx += 1;
    	canvas({curx,0},0,"         (强制打开特殊道具)"); curx += 2;
    	canvas({curx,0},0,"收集钥匙:要收集一定钥匙后才能通往终点"); curx += 2;
    	canvas({curx,0},0,"爆炸伤害:炸弹会炸死范围内单位,包括你自己"); curx += 1;
    	canvas({curx,0},0,"         (强制打开特殊道具)"); curx += 2;
    	canvas({curx,0},0,"怪物追击:场上会存在一定的怪物,它们会随机游走,但当看到你时,它们会向你追击"); curx += 1;
    	canvas({curx,0},0,"          但是你可以甩开它们,同时要利用地形卡好视野,同时地图上会出现安全点"); curx += 1;
    	canvas({curx,0},0,"          相应的,地图的路径将不再单一,你拥有多种路径通往终点"); curx += 2;
    	canvas({curx,0},0,"灯光不足:玩家出生时会携带灯源,随着时间流逝灯光会减弱,视野也会相应变小,"); curx += 1;
    	canvas({curx,0},0,"          需要去地图上搜寻燃料补充灯光,视野也会相应变小,需要去地图上搜寻"); curx += 1;
    	canvas({curx,0},0,"          燃料补充灯光"); curx += 2;
    	canvas({curx,0},0,"双人对战:开启双人模式,玩家出生在地图对角线,需不断搜寻道具击败对方"); curx += 1;
    	canvas({curx,0},0,"         (强制打开特殊道具 & 2)"); curx += 2;
    	canvas({curx,0},0,"按 Q 键退出");
    	
    	while(1)
    	{
    		char k =getch();
    		if(press( k, 'q'))break;
    	}
    }
    void enter_rule_item()
    {
    	system("cls");
    	cam_dp = {3,15};
    	int curx=0;
    	canvas({curx,0},0,"道具1: 引导之星(guide)  U 键"); curx += 1;
    	canvas({curx,0},0,"       使用后可以显示通往终点的道路,但只能显示距离你最近的5格"); curx += 1;
    	canvas({curx,0},0,"       (迷宫塌方中不可用)"); curx += 2;
    	canvas({curx,0},0,"接下来的为特殊道具,只有打开特殊模式才能使用"); curx += 2;
    	canvas({curx,0},0,"道具2:闪现(flash) I 键"); curx += 1;
    	canvas({curx,0},0,"       使用后可以闪现至预瞄点"); curx += 2;
    	canvas({curx,0},0,"道具3:炸弹(bomb) O 键"); curx += 1;
    	canvas({curx,0},0,"       使用后可以炸掉预瞄点3*3范围内的墙壁(不可炸掉边界,别想着偷鸡)"); curx += 2;
    	canvas({curx,0},0,"道具4:探远星(vision) \\"); curx += 1;
    	canvas({curx,0},0,"       收集之后可以增加视野,但存在上限,非线性增长"); curx += 2;
    	canvas({curx,0},0,"按 Q 键退出");
    	
    	while(1)
    	{
    		char k =getch();
    		if(press( k, 'q'))break;
    	}
    }
    void enter_difficulty_setting()
    {
    	system("cls");
    	cam_dp = {3,20};
    	int cur = 1, len = 5;
    	while(1) 
    	{
    		system("cls");
    		if(1<=cur && cur<=5)
    			canvas({cur*2-1,0},0,">");
    		vector<string> text={"",
    			"迷宫:简单难度",	"迷宫:正常难度",	"迷宫:困难难度",
    			"迷宫:地狱难度",	"迷宫:自定义模式(尚未开放)",		"按 W / S 键改位置",
    			"按 O 键确认",	"按 Q 键退出并保存设置"
    		
    		};
    		for(rint i=1;i<=len+3;i++)
    		{
    			int col=0;
    			if(choose==i)col=2;
    			canvas({i*2-1,1},col,text[i]);
    		}
    		
    		char k =getch();
    		if(press( k, 'w'))cur = (cur-1+len-1)%len+1;
    		if(press( k, 's'))cur = cur%len+1;
    		if(press( k, 'o'))
    		{
    			if(1<=cur && cur<=5)
    			{
    				choose = cur;
    				if(cur==5)
    				{
    					system("cls");
    					canvas({1,1},0,"暂未开放 ");
    					choose = 4;
    //					canvas({-1,1},0,"尽量不要进行非合法/常规输入,否则会出bug ");
    //					canvas({1,1},0,"输入迷宫宽度: "); cin>>mode[5][1];
    //					canvas({3,1},0,"输入迷宫长度: "); cin>>mode[5][2];
    //					canvas({5,1},0,"输入迷宫引导之星数量: "); cin>>mode_item[5][1];
    //					canvas({7,1},0,"输入完毕 ");
    					Sleep(2000);
    				}
    			}
    		}
    		if(press( k, 'q'))enter_setting();
    	}
    }
    void lose()
    {
    	game_over = true;
    	ending_of_game();
    	system("cls");
    	cam_dp= {3,20};
    	string s=str(score);
    	int sx= vision.x>>1, sy= vision.y>>1;
    	Setpos( sx, sy ); Color(0); SlowDisplay(100,"You lost!"); 
    	Setpos( sx +1 , sy ); Color(0); SlowDisplay(100,"used time:"+str( (clock()-startTime)/1000 ) + " score:"+str(score)); 
    	Setpos( sx +2 , sy ); system("pause");
    }
    void win()
    {
    	game_over = true;
    	ending_of_game();
    	system("cls");
    	string s=str(score);
    	cam_dp= {3,20};
    	int sx= vision.x>>1, sy= vision.y>>1;
    	Setpos( sx, sy ); Color(0); SlowDisplay(100,"You won!"); 
    	Setpos( sx +1 , sy ); Color(0); SlowDisplay(100,"used time:"+str( (clock()-startTime)/1000 ) + " score:"+str(score)); 
    	Setpos( sx +2 , sy ); system("pause");
    }
    void ending_of_game()
    {
    	paint();
    	game_update();
    	for(int i=1;i<=3;i++)
    	{
    		Setpos(p.x-cam.x+1,p.y-cam.y+1); Color(4); cout<<"●";
    		Sleep(500);
    		Setpos(p.x-cam.x+1,p.y-cam.y+1); Color(3); cout<<"●";
    		Sleep(500);
    	}
    	for(int i=max(vision.y,vision.x);i>=-vision.y-vision.x+2; --i)
    	{
    		for(int j=0;vision.x-j>=1&&i+j<=vision.y; ++j)
    			if(i+j>=1){Setpos(vision.x-j,i+j); Color(0); cout<<"  ";}
    		Sleep(50);
    	}
    	
    }
    
    
    void HideCursor(){CONSOLE_CURSOR_INFO cursor_info = {1,0};SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);/*Po*/}
    void showCursor()
    {
    	HANDLE h_GAME = GetStdHandle(STD_OUTPUT_HANDLE);
    	CONSOLE_CURSOR_INFO cursor_info;
    	GetConsoleCursorInfo(h_GAME,&cursor_info);
    	cursor_info.bVisible = true;
    	SetConsoleCursorInfo(h_GAME,&cursor_info);
    } 
    void Setpos(int x,int y){RealSetpos(x+cam_dp.x,y+cam_dp.y);}
    void RealSetpos(int x,int y){COORD pos;pos.X=y*2,pos.Y=x;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}
    void SlowDisplay(int x,string p)
    {
    	for(int i=0;i<p.size();i++)
    	{
    		cout<<p[i];
    		if(kbhit())x = 0;
    		Sleep(x);
    	}
    }
    int sprand(int l,int r){return rand()%(r-l+1)+l;}
    void Color(int a)
    {
        if(a==0) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
        if(a==1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);
        if(a==2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
        if(a==3) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
        if(a==4) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);
        if(a==5) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
        if(a==7) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_GREEN);
        if(a==8) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|BACKGROUND_RED);
    }
    
    inline void read(int &x)
    {
    	int f=1;x=0;char ch=getchar();
    	while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
    	while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
    	x=x*f;
    }
    inline void ffout(int x)
    {
        if(x<0){x=-x; putchar('-'); }
        short sta[63],top=0;
        do{ sta[top++]=x%10; x/=10; }while(x);
        while(top) putchar(sta[--top]+'0');
    }
    inline void ffout(int x,char b)
    {
        if(x<0){x=-x; putchar('-'); }
        short sta[63],top=0;
        do{ sta[top++]=x%10; x/=10; }while(x);
        while(top) putchar(sta[--top]+'0');
        putchar(b);
    }
    language
    
    ```#include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    
    int main(){
    	ios::sync_with_stdio(false);
    	cin.tie(0);
    	cout.tie(0);
    	ll n;
    	cin>>n;
    	string s;
    	cin>>s;
    	ll cnt=0,cnt2=0,cnt3=0;
    	for(int i=0;i<s.size();i++){
    		if(s[i]=='N'){
    			cnt++;
    		}else if(s[i]=='O'){
    			cnt2+=cnt;
    		}else if(s[i]=='I'){
    			cnt3+=cnt2;
    		}
    	}
    	cout<<cnt3;
    	return 0;
    }
    
    
    
    打表是一种勇气,搜索是一种信仰
    
    剪枝是一种精神,骗分是一种日常
    
    爆零是一种宿命,WA是一种绝望
    
    TLE是一种痛苦,RE是一种放弃
    
    UKE是一种无奈,AC是一种原谅
    
    AK是一种幻想,弃赛是一种颓废
    
    吊打是一种必然,进队是一种奢望
    
    模拟只会猜题意,贪心只能过样例
    
    数学上来先打表,DP一般看规律
    
    组合数学靠运气,计算几何瞎暴力
    
    图论强行套模板,数论只会GCD
    
    递归递推伤不起,搜索茫然TLE
    
    分治做得像枚举,暴力枚举数第一
    
    数据结构干瞪眼,怒刷水题找信心
    
    涨姿势也不容易,考试一来全懵逼
    
    ```山重水复疑无路,make后面不加to。
    
    秦时明月汉时关,高价氧化低价还。
    
    君问归期未有期,点裂加倍匀两极。
    
    酒酣胸胆尚开张,GM=gR方。
    
    碧云天,黄叶地,高温高压催化剂。
    
    横看成岭侧成峰,洛伦兹力不做功。
    
    草树知春不久归,b方减去4ac。
    
    瀚海阑干百丈冰,酸脱羟基醇脱氢。 `
    
    各种老师一回头 语文老师一回头,此地空余黄鹤楼。 数学老师一回头,二次函数对称轴。 英语老师一回头,sorry加上三克油。 化学老师一回头,二氧化碳变汽油。 物理老师一回头,一跟杠杆撬地球。 生物老师一回头,试管婴儿水中游。 地理老师一回头,大陆版块乱漂流。 劳技老师一回头,破铜烂铁来走秀。 政治老师一回头,布什改行卖豆油。 美术老师一回头,蒙娜丽莎也风流。 体育老师一回头,奥运取消打篮球。 电脑老师一回头,学生全成阿Q友。 全体老师一回头,世界人民没自由。
    
    少年应有鸿鹄志,当骑骏马踏平川。
    山有木兮卿有意,昨夜星辰恰似你。
    终南有坟,名不老。
    于万人中万幸得以相逢,刹那间澈净明通。
    故人依稀天边去,十年孤襟迎秋风。
    江湖每逢一夜雨,为谁鞍前系灯笼。
    青山远去万里遥,苏澜城外雨潇潇。
    孤舟一叶问船家,何日重到苏澜桥。
    
    
    
    1. 清平乐·村居
    
    ---
    
    【宋】辛弃疾
    茅房低小,臭得不得了。醉里吴音相媚好,白发谁家翁媪?大儿锄豆失踪,中儿被困鸡笼。最喜小儿亡赖,溪头拐卖儿童。
    
    ---
    
    静夜思
    【唐】李白
    床前明月光,
    李白睡的香。
    梦见棒棒糖,
    口水三千丈。
    
    ---
    
    (上文:改编,下文:自编)
    
    ---
    
    厕所🚾
    半夜三更,厕所没灯。
    你上厕所,掉进茅坑。
    激烈斗争,壮烈牺牲。
    为纪念你,厕所装灯。
    
    ---
    
    李白杂事
    一二三四五六七,
    李白掉进洗衣机。
    在厕所里耍牛逼,
    而且还在打游戏。
    
    ---
    
    
    
    老骥伏枥,志在千里。横扫饥饿,做回自己。
    仰天大笑出门去,归来倚杖自叹息。
    垂死病中惊坐起,笑问客从何处来。
    十年生死两茫茫,喜羊羊与灰太狼。
    远赴人间惊鸿宴,鬼刀一开看不见。
    男儿当自强,对镜贴花黄。
    一朝被蛇咬,处处闻啼鸟。
    枯藤老树昏鸦,上班摸鱼回家!
    读书破万卷,卷卷有爷名。
    情不知所起,一往情深,再而衰,三而竭。
    天堂有路你不走,学海无涯苦作舟。
    少小离家老大回,安能辨我是雄雌。
    巴山楚水凄凉地,蜜雪冰城甜蜜蜜。
    吾辈男儿当自强,吃个桃桃好凉凉。
    京中有善口 J 者,从此君王不早朝。
    
    1. 
    
    宝藏
    
    

    #include<windows.h> using namespace std; int main(){ system("A 10"); }

    
    # 超搞笑版本
    
    回头歌
    语文老师一回头,此地空杀黄鹤楼。
    数学老师一回头,二次函数对称轴。
    英语考试一回头,扫睿加上三克油。
    历史老师一回头,秦始皇来推铅球。
    地理老师一回头,学校门口泥石流。
    化学老师一回头,二氧化碳变汽油。
    生物老师一回头,试管婴儿水里游。
    物理老师一回头,阿基米德要跳楼。
    音乐老师一回头,全班同学都梦游。
    美术老师一回头,蒙娜丽莎也风流。
    劳动老师一回头,破铜烂铁来走秀。
    体育老师一回头,乔丹改打乒乓球。
    信息老师一回头,全班同学阿Q友。
    食堂阿姨一回头,大家都来打酱油。
    全班同学一回头,老师吓得没自由。
    
    1、一朝被蛇咬,处处闻啼鸟。
    
    2、朕与先生解战袍,芙蓉帐暖度春宵。
    
    3、春宵一刻值千金,绝知此事要躬行。
    
    4、后宫佳丽三千人,铁杵磨成绣花针。
    
    5、借问酒家何处有,[姑苏城外寒山寺](https://zhidao.baidu.com/search?word=%E5%A7%91%E8%8B%8F%E5%9F%8E%E5%A4%96%E5%AF%92%E5%B1%B1%E5%AF%BA&fr=iknow_pc_qb_highlight)。
    
    6、垂死病中惊坐起,笑问客从何处来。
    
    7、问君能有几多愁,别是一番滋味在心头。
    
    [![](https://iknow-pic.cdn.bcebos.com/08f790529822720eb51da36869cb0a46f31fab55?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto)](https://iknow-pic.cdn.bcebos.com/08f790529822720eb51da36869cb0a46f31fab55 "点击查看大图")
    
    8、飞流直下三千尺,不及[汪伦](https://zhidao.baidu.com/search?word=%E6%B1%AA%E4%BC%A6&fr=iknow_pc_qb_highlight)送我情。
    
    9、床前明月光,对影成三人。
    
    10、在天愿作比翼鸟,大难临头各自飞。
    
    11、天苍苍,野茫茫,[一树梨花压海棠](https://zhidao.baidu.com/search?word=%E4%B8%80%E6%A0%91%E6%A2%A8%E8%8A%B1%E5%8E%8B%E6%B5%B7%E6%A3%A0&fr=iknow_pc_qb_highlight)。
    
    12、美人[卷珠帘](https://zhidao.baidu.com/search?word=%E5%8D%B7%E7%8F%A0%E5%B8%98&fr=iknow_pc_qb_highlight),万径人踪灭。两岸猿声啼不住,惊起蛙声一片。
    
    13、车辚辚,马萧萧,二月春风似剪刀。
    1、《春晓》
    
    春眠不觉晓,处处蚊子咬。
    
    夜来大狗熊,谁也跑不了。
    
    2、《望炉山瀑布》
    
    日照香炉生紫烟,李白来到烤鸭店。
    
    口水直流三千尺,一摸口袋没带钱。
    
    3、《早发白帝城》
    
    朝辞宿舍心喜欢,网友见面倏忽还。
    
    满脸哀伤啼不住,方才险到鬼门关。
    
    4、《望炉山瀑布》
    
    日照香炉生紫烟,李白来到烤鸭店。
    
    口水直流三千尺,一摸口袋没带钱。
    
    5、《江南春》
    
    大千网络绿映红,聊天见面心渐空,
    
    见面四百八十次,多少恐龙在其中
    
    6、《静夜诗》
    
    床前明月光, 李白去开窗,
    
    遇到一耳光, 牙齿掉光光。
    
    7、《如梦令》
    
    昨夜饮酒过度, 误入校园深处,
    
    呕吐呕吐呕吐, 惊起鸳鸯无数。
    
    8、《锄禾》
    
    锄头正中午, 贪官也辛苦,
    
    白银两万五, 关门把钱数。
    
    9、《山行》
    
    远上香山石径斜, 白云深处你和他,
    
    原想王子会公主, 实是恐龙见青蛙。
    
    春眠不洗澡,处处蚊子咬,用了灭害灵,蚊子跑不了
    床前明月光,李白打开窗,肥婆在爬窗,李白看见了,拿起AK枪
    李白乘舟没付钱,突闻小舟大漏水,桃花潭水深千尺,不知李白死没死
    床前明月光,李白去理发,没付店家钱,剃了光光
    千里莺啼绿映红,水村山郭被炸聋,南朝四百八十炸,多少楼台报废中
    床前明月光,李白打开窗,窗外着火了,冲上阁楼去,越冲越烟多,冲上南天门
    咬定烤鸭不放松,立根原在草丛中,千磨万击受不了,神龙摆尾挖地洞,一挖挖到墨西哥
    春眠不洗澡,处处蚊子咬,夜来灭蚊队,蚊子往哪跑?
    月落乌啼雨满天,江枫渔火全熄灭。姑苏城外寒山寺,夜半修理大钟中
    人之初,性笨蛋,考试作弊得零蛋,老爸发现怎么ban,那把菜刀跟他干,干不过,怎么办,那把AK跟他干,干不过,怎么办,召唤铠甲跟他干,他召帝皇怎么办,跳楼去找凹凸曼,干不过,怎么办,凉拌!
    人之初,性本善,我学习,你捣乱,我考试,你偷看,我吃饭,偷看,看见两个臭鸡蛋
    
    [日照香炉](http://www.so.com/s?q=%E6%97%A5%E7%85%A7%E9%A6%99%E7%82%89&ie=utf-8&src=internal_wenda_recommend_textn)生紫烟,[李白](http://www.so.com/s?q=%E6%9D%8E%E7%99%BD&ie=utf-8&src=internal_wenda_recommend_textn)来到烤鸭店。
    口水直流三千尺,一摸口袋没带钱。
    
    春眠不**觉晓,处处蚊子咬。**
    夜来大狗熊,谁也跑不了。
    
    李白**乘舟不给钱, **
    船夫一脚踢下船。
    桃花滩水深千尺,
    不知李白死没死。
    
    清 明
    【唐】 杜牧
    清明时节雨纷纷
    孤家寡人[欲断魂](http://www.so.com/s?q=%E6%AC%B2%E6%96%AD%E9%AD%82&ie=utf-8&src=internal_wenda_recommend_textn)
    借问美女**何处有 **
    牧童遥指三里屯(看,小杜的诗**是入木三分吧。看在今天清明的**份上,就让他先发这吧)
    
    春 晓
    【唐】 孟浩然
    春眠不觉晓
    理工美女少
    夜来睡不着
    俺去网上找 (老孟也不甘示弱)
    江**南逢李龟年 **
    【唐】 杜甫
    聊天室里寻**美女 **
    q q 泡泡 M S N
    正是理工好风景
    聊得投机想见**人(嘿嘿,诗圣大人**雄心勃勃啊)
    中篇
    早春呈水部张十八员外
    【唐】 韩愈
    北理小雨润如酥
    美女遥看近却无
    最是一年伤心事
    网上M M原是猪。。。 (看来韩先生受的打击不小)
    
    早发白帝城
    【唐】 李白
    朝辞宿舍心喜欢
    网友见面倏忽还
    满脸哀伤啼**不住 **
    方才险到鬼门关 (诗仙好象碰到了一只肉**食性的\~\~阿门) **
    
    山 行
    【唐】 杜牧
    远上香山石径**斜 **
    白云深处我和她
    原**想王子会公主 **
    实是恐龙见青蛙 (哇,又是小杜,看来真是感触良**多啊) **
    诗经.[蒹葭](http://www.so.com/s?q=%E8%92%B9%E8%91%AD&ie=utf-8&src=internal_wenda_recommend_textn)
    蒹葭苍苍,[白露为霜](http://www.so.com/s?q=%E7%99%BD%E9%9C%B2%E4%B8%BA%E9%9C%9C&ie=utf-8&src=internal_wenda_recommend_textn)
    所谓伊人,在网一方
    乘兴见之,脸胖且长
    乘兴会之,腰如大水缸。。。(哎,老祖先也没逃过这[一劫](http://www.so.com/s?q=%E4%B8%80%E5%8A%AB&ie=utf-8&src=internal_wenda_recommend_textn)。。。)
    
    [卜算子](http://www.so.com/s?q=%E5%8D%9C%E7%AE%97%E5%AD%90&ie=utf-8&src=internal_wenda_recommend_textn)
    【宋】 李之仪
    我住北理工
    她住理工北
    日日聊天约见面
    共呼见到鬼。。。。(怎么词人也来凑热闹\~\~真是恐龙代代**有啊) **
    尾篇
    江南春
    【唐】 杜牧
    大千网络绿映红
    聊天见面心渐空
    见面四百八十次
    多少恐龙在其中(我可以负责**任的说,小杜已经不行了**,后果很严重。。。)
    送元二使安西
    【唐】 王维
    北理朝雨浥**清晨 **
    满腹失望伤[透心](http://www.so.com/s?q=%E9%80%8F%E5%BF%83&ie=utf-8&src=internal_wenda_recommend_textn)
    劝君莫再寻网友
    明日出家奔少林(金玉良言啊\~\~)
    
    日照茅厕升黑烟,李白来到厕所间。飞流直下三炮屎,摸摸口袋没有纸。看见杜甫在拉屎,忙上前去讨张纸。杜甫只有一张纸,哥俩借来一块使采纳哦!
    
    1、搞笑歪诗:某女作诗曰:一日黄昏漫步,见一男生装酷,呕吐,呕吐,低头只想撞树!
    男生回诗曰:一日自习深处,见一恐龙撞树,恐怖,恐怖,可怜那颗小树!
    2、巫山望不极,望望下朝氛。(波霸型的) 莫辨啼猿树,徒看神女云。(原来是在偷窥)
    惊涛乱水脉,骤雨暗峰文。(此处略去…字)
    沾裳即此地,况复远思君。(湿鸟)
    春眠不觉晓,处处闻啼鸟。
    夜来风雨声,花落知多少?(一晚上到底和几个人做了多少次,连自己也不知道了。)
    3、日照香炉生紫烟,李白来到烤鸭店。口水直流三千尺,一摸口袋没带钱。日照香炉生紫烟,李白在家抽香烟。突然飞来原子弹,炸得李白直冒烟。李白上山去拉屎,扒下裤子就开始。飞流直下八刨屎,谁只没带卫生纸。
    4、春眠不觉晓,处处蚊子咬。
    夜来大狗熊,谁也跑不了。
    5、李白乘舟不给钱,
    船夫一脚踢下船。
    桃花滩水深千尺,
    不知李白死没死。
    6、清明时节雨纷纷
    孤家寡人欲断魂
    借问美女何处有
    牧童遥指三里屯
    7、春眠不觉晓
    理工美女少
    夜来睡不着
    俺去网上找
    8、北理小雨润如酥
    美女遥看近却无
    最是一年伤心事
    网上MM原是猪
    9、远上香山石径斜
    白云深处我和她
    原想王子会公主
    实是恐龙见青蛙
    10、蒹葭苍苍,白露为霜
    所谓伊人,在网一方
    乘兴见之,脸胖且长
    乘兴会之,腰如大水缸
    11、大千网络绿映红
    聊天见面心渐空
    见面四百八十次
    多少恐龙在其中
    12、送元二使安西
    【唐】王维
    北理朝雨浥清晨
    满腹失望伤透心
    劝君莫再寻网友
    明日出家奔少林
    13、鹅鹅鹅,
    曲项用刀割。
    拔毛加瓢水,
    点火盖上锅。
    14、古藤老树闹鬼,小桥流水有鬼
    古道处处尸体
    生化危机
    断肠人在鬼屋
    15、半夜三更鬼敲门路上行人欲断魂
    16、长江后浪推前浪前浪死在沙滩上
    17、红橙黄绿青蓝紫东南西北中发白
    18、后宫佳丽三千人铁棒也会磨成针
    19、宽衣解带终不悔为伊消得人憔悴
    20、千山万水总是情多给一份行不行
    21、穷则独善其身富则妻妾成群
    22、三个臭皮匠臭味都一样
    23、射人先射马捉奸捉在床
    24、书到用时方恨少钱到月底不够花
    25、天若有情天亦老人若有情死得早
    26、天生我材必有用老鼠儿子会打洞
    27、问君能有几多愁恰似一壶二锅头
    28、结发之夫不上床,糟糠之妻不下堂
    
    29、《卧春》《我蠢》
    暗梅幽闻花,俺没有文化,
    卧枝伤恨底,我智商很低,
    遥闻卧似水,要问我是谁,
    易透达春绿。一头大蠢驴。
    岸似绿,俺是驴,
    岸似透绿,俺是头驴,
    岸似透黛绿。俺是头呆驴。
    30、说四诗
    今天星期四,
    李白去考试。
    考了四十四,
    回家看电视。
    看到少林寺,
    想学真本事。
    被打成西红柿,
    还说自己有本事。
    31、静夜诗
    床前明月光,
    李白打开窗.
    遇到X光,
    牙齿掉光光.
    32、春晓
    春天不洗脚,
    蚊子处处咬。
    夜半一翻身,
    压死真不少。
    
    33、好美眉
    美眉几时有,上机问网友,不知网上佳丽,此妹是何人?我欲下线归去,惟恐天南地北,远处不堪寻,查找选芳名,何似在网吧.打电话,记传呼,单照付,不应心疼,何时不想聚时缘?月有阴晴圆缺,网有恐龙青蛙,此事古难全.但愿好美眉.千里共聊天.
    34、乾篇
    黑松林中一老僧,
    隐身居在半空中;
    虽说不是神住处,
    阎王造死他造生。
    35、坤篇
    黑松林中一条沟,
    一年四季水长流;
    不见牛羊来吃草,
    但见和尚来洗头。
    36、《沁园春-考试》:
    考场风光,千里纸飘,万里眼瞟。望教室内外,风景甚好,交头接耳,好不热闹,欲与考官试比高;需来日,看试卷成绩,互喜互贺。惜八股取士,摇头晃脑。死记硬背,甚是苦恼。一代天骄,时代骄子,考试作弊出高招。俱往矣,数风流高手,还看今朝。
    37、《如梦令》(考风不正)
    常记考试作弊,老师异常美丽;
    眼睛好像遍布,捡起纸条于地;
    诡异,诡异,处分难以逃避。
    语文老师一回头,鲁讯甘为孺子牛;
    数学老师一回头,六元六次都能求;
    英语老师一回头,sorry加上thankyou;
    化学老师一回头,二氧化碳变汽油;
    物理老师一回头,一根杠杆撬地球;
    生物老师一回头,夜云恐怖低一头;
    地理老师一回头,百幕大川也能畅游;
    历史老师一回头,秦始皇来推铅球;
    体育老师一回头,黛玉也能踢足球;
    劳技老师一回头,破铜烂铁来走秀;
    音乐老师一回头,八级地震炸地球;
    美术老师一回头,蒙娜丽莎也风流。
    38、上联:考试不作弊来年当学弟
    下联:宁可没人格不可不及格
    横批:就是要过!
    
    39、《上课瞌睡》:硬挺头颅永不到,纵然嘴角水滔滔。
    40、《虞美人》春花秋月何时了,考试知多少,教室昨夜又报分,成绩不堪回首月明中,上次余悸今尤在,只是科目改,问君何时能毕业,恰似一潭死水永无望。
    41、天苍苍,野芒芒,今年的希望太渺茫。水弯弯,路长长,没钱的日子太漫长。楼高高,人忙忙,恨不得马上抢银行。
    42、一清华MM写道:
    一日黄昏漫步,见一男生装酷,呕吐,呕吐,只想低头撞树
    清华男生跟贴:
    一日自习深处,见一女生撞树,呕吐,呕吐,恐龙也敢摆酷
    另一学生跟贴:
    近日黄昏奇遇,见有两人呕吐,装酷,装酷,一不留神撞树
    第四人跟贴:
    一日闲庭信步,忽见三人呕吐,何故,何故?只为都在水木
    又一强人跟贴:
    无事闲逛水木,惊闻四人撞树,愤怒,愤怒,罚你四人植树
    第六人跟贴:
    那日四人植树,还有一人监督,残酷,残酷,惨状不堪入目
    北大GG也来凑热闹:
    闲来网上信步,忽闻有人呕吐,捧腹,捧腹,水木学子撞树!!撞树还要植树,破坏惩罚往复,胡涂,胡涂,何不北大修路?
    43、新《陋室铭》
    分不在高,及格就行;学不在深,作弊则灵。
    斯是教室,唯吾闲情。小说传的快,杂志翻的勤。
    琢磨下象棋,寻思看电影。善于抄作业,猎奇闻。
    无书声之乱耳,无学习之劳心。虽非跳舞场,
    堪比游乐厅,心里云:“混张文凭!”
    44、
    (一)昨夜大风刮大树,独上高楼,站都站不住.衣带太宽不缩水,为伊笑得没法睡.众人劝他千百度,木然回首,那人现在,还是半瓶醋.
    (二)昨夜西风吹不住,独上高楼,好悬迷了路.衣袋空空心灵美,为伊喝酒常喝醉.众里寻他千百度,突然发现,那人睡在,街道办事处.
    (三)昨夜大风真恐怖,独上高楼,差点走绝路.衣带渐宽像饿鬼,为伊活得真他妈累.众里吹牛千百度,后来发现,那人原来,是个二百五.
    四)昨夜走路撞大树,独自昏倒,躺在白颐路衣帽全丢真后悔,为伊搞得太狼狈众人找我千百度,募然发现,谁都一样,全是困难户
    (五)昨夜大雪压大树,独自跳楼,还是软着陆.衣带再宽也不悔,为伊啥都无所谓.众里寻死千百度,屡试屡败,恼羞成怒,闹到人事处.
    (六)昨夜发现歪脖树,独自一人,心里直犯怵.衣带好用爱谁谁,为伊甘当吊死鬼.众里寻他千百度,募然发现,那人吊在,门外那棵树。
    
    45、两个黄鹂鸣翠柳,一行白鹿上西天。
    46、窗含西岭千秋雪,门伯东吴大翻船。
    47、清明时节雨纷纷,路上行人都没伞。
    48、借问酒家何处有,前面就是大酒楼。
    49、两情若是长久时,该是两人结婚时。
    50、好雨知时节,该下就得下。
    随风潜入夜,淋湿一大片。
    51、明月几时有?初一到十五
    52、不知天上宫阙,到底在哪里。
    53、海阔凭鱼跃,桌宽任我眠.
    54、___,为伊消得人憔悴
    同学答:宽衣解带终不悔
    (正解为“衣带渐宽终不悔”,偶承认这个是思想有问题)
    55、问渠哪得清如许,____
    同学答:心中自有清泉在
    (正解为“唯有源头活水来”,咱还是和水粘了点边~~~)
    56、何当共剪西窗烛,____
    同学答:夫妻对坐到天明
    (语文老师阅卷时笑晕。后在课堂时说此事,又晕!正解为“却话巴山夜雨时”)
    57、蚍蜉撼大树,____
    同学答:一动也不动
    (正解为“可笑不自量”。一动也不动,赫赫,很符合事实阿)
    58、君子成人之美,____
    同学答:小人夺人所爱
    (直接晕死)
    59、穷则独善其身,____
    同学答:富则妻妾成群
    (正解:达则兼济天下)
    60、___,天下谁人不识君
    同学答:只要貌似萨达姆
    (汗|||....)
    61、后宫佳丽三千人,____
    同学答:铁棒也会磨成针~~~(估计不是磨成针这么简单了吧)
    (正解为“三千宠爱在一身”)
    62、身无彩凤双飞翼,___
    同学答:拔毛凤凰不如鸡
    还有个同学答:夫妻双双把家还
    (正解为“心有灵犀一点通”)
    63、东边日出西边雨,___
    同学答:床头打架床尾合
    还有个同学答:上错花轿嫁对郎
    64、但愿人长久,____
    同学答:一颗永流传
    (当时狂笑,现在觉得挺经典的。正解为“千里共婵娟”)
    65、西塞山前白鹭飞,___
    同学答:东村河边爬乌龟
    (对的挺工整的)
    66、我劝天公重抖擞,____
    同学答:天公对我吼三吼
    (正解为“不拘一格降人才”,龚自珍)
    67、天生我才必有用,____
    同学答:关键时刻显神通
    又有同学答:老鼠儿子会打洞
    (整办公室的语文老师集体毫无形象的狂笑)
    68、天若有情天亦老,___
    同学答:人不风流枉少年!
    (正解为“月若无恨月长圆” 李贺《金铜仙人辞汉歌》 )(还有一句是“人间正道是沧桑”)
    69、洛阳亲友如相问,____
    同学答:请你不要告诉他
    (正解为“一片冰心在玉壶”)
    70、期末考试出对联, 上联是英雄宝刀未老
    该初三同学对下联为:老娘丰韵尤存
    71、良药苦口利于病,___
    同学答:不吃才是大傻瓜
    72、人生自古谁无死,___
    同学答:只是死的有先后
    (结局:家长会后被老师留下来训话鸟…)
    73、床前明月光,___
    同学答:李白睡的香
    74、管中窥豹,___
    同学答:吓我一跳
    (哈哈哈!正解为“可见一斑”)
    75、___,飞入寻常百姓家
    同学答:康佳彩霸电视机
    76、葡萄美酒夜光杯,___
    同学答:金钱美人一大堆
    77、____,路上行人欲断魂
    初一学生的杰作:半夜三更鬼敲门
    78、吾不能为五斗米折腰
    同学填的是:给我六斗就可以…
    79、老吾老以及人之老,___
    同学答:妻吾妻以及人之妻
    (老师后来评卷时说那个同学特别具有奉献精神,哈哈)
    80、想当年,金戈铁马,___
    同学答:看今朝,死缠烂打
    (正解为“气吞万里如虎”)
    81、五年级的一次考试就考到了“三个臭皮匠,___”
    同学答:臭味都一样
    (把监考和外面的校长笑翻了)
    82、初一的学生对对子,“登城白云间揽山色入怀,___”
    同学答:我到酒店去抱小姐上床
    (他的语文老师差点当场吐血而亡)
    83、两情若是长久时,__
    同学答:该是两人成婚时
    84、沉舟侧畔千帆过,___
    同学答:孔雀开屏花样多
    85、书到用时方恨少,____
    同学答:钱到月底不够花
    86、天若有情天亦老,____
    同学答:人若有情死得早
    (正解为“月若无恨月长圆”)
    87、人生自古谁无死,___
    同学答:有谁大便不带纸
    (没有语言了...)
    88、有次考李清照的如梦令,“知否?知否?___”
    同学答:SORRY I,DONT KNOW...
    (正解为“应是绿肥红瘦”)
    89、有次考鲁迅先生某句:“___,我以我血溅轩辕”
    同学答:他以他刀**身
    90、语文考试,填空里有一首**诗:“为人进出的门紧锁着,__
    ,一个声音高喊着:__我渴望自由,但人的身躯怎能从狗洞子里爬出
    …”
    同学答:为狗爬出的洞也锁着 / 他妈的,都锁着!
    91、千山万水总是情,__
    同学答:多给一份行不行
    (批卷老师对了一句:情是情,分是分,多给一份都不行)
    92、高一的时候,一次月考,上句“仰天大笑出门去,(正解)我辈岂是蓬蒿人”。班
    上有人写:一不小心扭到腰。 还有一句,上句:“清水出芙蓉,(正解)天然去雕饰”
    。有人写,淤泥出莲藕;还有人更绝,写:乱世出英雄
    
    
  • 最近活动

  • Stat

  • Rating