#include<windows.h>
#include<bits/stdc++.h>
using namespace std;
void Think(int x);
struct node{//标准为10
int num;//总共需要的知识点
int Need[5];//具体的知识点
int Time[5];//理论思考用的时间
int real_time[5];//实际思考用的时间
int Needab[5];//标准值
int codeTime[5];//代码用的时间 标准值为10
int code[5];//每一个部分分理论代码时间
int real_code[6];//实际需要的代码时间
int now_code;//现在的代码时间
int all_think[6];//每一个部分分实际思考时间
int Now_think;//现在在思考几分的代码
int now_think;//每一个部分分现在的思考时间
int code_better;//最优代码是几分的
int gua_num1;//挂了几次 (小)
int gua_num2;//挂了几次 (中)
int gua_num3;//挂了几次 (大)
int Yangli;//样例个数
int Yangli_strength[6];//样例强度
int duipai;//对拍
int duipai_baoli;//对拍用的暴力
int duipai_OK;//打没打
int bufen;//几个部分分
int bufen_fen[6];//部分分的具体数值
int maybe_socer;//理论分数
int socer;//分数
void clear(){
memset(Need,0,sizeof(Need));
memset(Time,0,sizeof(Time));
memset(real_time,0,sizeof(real_time));
memset(Needab,0,sizeof(Needab));
memset(codeTime,0,sizeof(codeTime));
memset(code,0,sizeof(code));
memset(real_code,0,sizeof(real_code));
memset(all_think,0,sizeof(all_think));
num=now_code=Now_think=now_think=code_better=gua_num1=gua_num2=gua_num3=Yangli=duipai=duipai_baoli=duipai_OK=bufen=socer=maybe_socer=0;
memset(Yangli_strength,0,sizeof(Yangli_strength));
memset(bufen_fen,0,sizeof(bufen_fen));
}
}Q[5],QQ[5];//用于备份
int diff,st,en;
int Your[100];//0->debug
int Gua;//挂分率
//上面这个是在考试中使用
int fact[50][20];//实际水平,可以被提升 0为你自己,其他的是人机
int jing[50][20];//为了升到下一级需要做出的努力,目前为50
int whk[50];//文化课水平
int zhuanxin[50];//上课的专心程度
int Guaping[50];//挂分率(粗心程度)
int Your_bei[100];
int Gua_bei;//用于备份
int Food;//你的食物
int Bathroom;//去厕所的机会
int Rand(int x,int y){
int A=rand(),B=rand();
return A*1ll*B%(y-x+1)+x;
}
map<int,string> ma;
int flag[10],maxn;
int testtime=240;//考试剩余时间
int kkk[5];//每一个题的当前状况
/*
0 没看
1 思考
2 code
3 检查/结束
*/
void look(int x,int flag){//看第x题 (第一次或者第n次)
kkk[x]=1;
printf("你打开了T%d\n",x);
if(!flag){
printf("你花了1分钟阅读了T%d\n你判断出这道题需要如下的知识点:\n",x);
}else{
printf("你迅速回顾了T%d\n你回忆起这道题需要如下的知识点:\n",x);
}
for(int i=1;i<=Q[x].num;i++) cout<<ma[Q[x].Need[i]]<<'\n';
int Y=0,N=0;
for(int i=1;i<=Q[x].num;i++) Y+=Your[Q[x].Need[i]],N+=Q[x].Needab[i];
printf("一共有%d个样例\n",Q[x].Yangli);
if(!Q[x].duipai) printf("不");
printf("支持对拍\n");
if(Q[x].bufen-1){
printf("有%d个部分分:",Q[x].bufen-1);
for(int i=1;i<Q[x].bufen;i++){
if(i^1)printf(",");printf("%d分",Q[x].bufen_fen[i]);
}
printf("\n");
}else{
printf("没有部分分\n");
}
if(Q[x].all_think[Q[x].bufen]<=5){
printf("你觉得这道题很水");
}else if(Q[x].all_think[Q[x].bufen]<=15){
printf("你觉得这道题有点简单");
}else if(Q[x].all_think[Q[x].bufen]<=30){
printf("你觉得这道题可做");
}else if(Q[x].all_think[Q[x].bufen]<=60){
printf("你觉得这道题有点难");
}else{
printf("你觉得这道题几乎不可做");
}
printf(",");
if(Q[x].real_code[Q[x].bufen]<=5){
printf("代码量非常小");
}else if(Q[x].real_code[Q[x].bufen]<=15){
printf("代码量还好");
}else if(Q[x].real_code[Q[x].bufen]<=30){
printf("代码量一般");
}else if(Q[x].real_code[Q[x].bufen]<=60){
printf("代码量有点大");
}else{
printf("代码量大得像个猪国杀");
}
printf("\n");
}
void Do(int x,int y){//已有思考(代码)时间,实际需要思考(代码)时间
double a=x*1.0/y;
if(a==0.0){
printf("还没开始");
}else if(0.0<a&&a<0.2){
printf("不到一小半");
}else if(0.2<=a&&a<0.4){
printf("比一小半多");
}else if(0.4<=a&&a<0.6){
printf("一半左右");
}else if(0.6<=a&&a<0.8){
printf("一大半左右");
}else if(0.8<=a&&a<1){
printf("快完了");
}else{
printf("完成了");
}
}
int duipai;//对拍打没有
void check(int x){
int a;
while(1){
printf("考试剩余时间:%dmin\n你决定检查T%d\n",testtime,x);
printf("T%d",x);
if(!Q[x].duipai){
printf("不");
}
printf("支持对拍\n你打算怎么检查?\n");
printf("1.测试样例(无耗时)\n2.静态差错\n3.对拍(第一次写对拍程序1min,数据生成器以及暴力代码时间%dmin)\n",Q[x].duipai_baoli);
printf("4.干点别的事情\n");
scanf("%d",&a);
if(a<=0){
printf("输入不合法\n"),Sleep(1000),system("cls");
continue;
}
if(a==1||a==2||a==3||a==4)break;
printf("输入不合法\n"),Sleep(1000),system("cls");
continue;
}
if(a==4){
return;
}
system("cls");
if(a==1){
printf("你决定测试样例\n");
for(int i=1;i<=Q[x].Yangli;i++){
printf("正在测试样例%d......",i);
if(Q[x].Yangli_strength[i]<=Q[x].gua_num1*5+Q[x].gua_num2*10+Q[x].gua_num3*50+100-Q[x].bufen_fen[Q[x].Now_think]){
printf("该样例未通过!\n");
}else{
printf("该样例通过!\n");
}
}
}else if(a==2){
while(1){
printf("考试剩余时间:%dmin\n你决定静态差错\n你打算检查多久?\n",testtime);
scanf("%d",&a);
if(testtime<=0){
printf("考试结束了!\n"),Sleep(1000);
return;
}
if(a<0){
printf("输入不合法\n"),Sleep(1000),system("cls");
continue;
}
if(a==0){
printf("你检查了个寂寞!\n"),Sleep(1000),system("cls");
continue;
}
if(a>testtime){
printf("你没有那么多时间了!\n"),Sleep(1000),system("cls");
continue;
}
break;
}
printf("你决定检查%dmin\n",a);
int OK=0;//是否检查出来
int num1=0,num2=0,num3=0,Next=-1;
for(int i=1;i<=a;i++){
int asd;
while(1){
asd=Rand(1,100);
if(asd^Next)break;
}
Next=asd;
if(asd<=99&&Q[x].gua_num3){
OK=3,Q[x].gua_num3--,num3++;
}else if(asd<=20&&Q[x].gua_num2){
OK=2,Q[x].gua_num2--,num2++;
}else if(asd<=1&&Q[x].gua_num1){
OK=1,Q[x].gua_num1--,num1++;
}
}
printf("过去了%dmin",a);
testtime-=a;
if(!OK){
printf(",你什么错误也没有检查出来\n");
}else{
int print=0;
if(num1){
printf(",你检查出了%d个小错误",num1),print=1;
}
if(num2){
printf(",");
if(!print)printf("你检查出了");
printf("%d个一般错误",num2);
print=1;
}
if(num3){
printf(",");
if(!print)printf("你检查出了");
printf("%d个严重错误",num3);
print=1;
}
printf(",并且迅速改正了它们!\n");
}
}else if(a==3){
if(!Q[x].duipai){
printf("这道题目不支持对拍!\n");
}else{
int Need=0;
if(!duipai){
Need++;
}
Need+=Q[x].duipai_baoli;
if(Need>testtime){
printf("你没有那么多时间了!\n");
return;
}
printf("你决定对拍\n");
if(!duipai){
duipai=1,testtime-=(Q[x].duipai_baoli+1);
printf("你发现你没有打对拍程序\n你花了1min打完了对拍程序\n你又花了%dmin打完了数据生成器以及暴力程序\n",Q[x].duipai_baoli);
}else{
if(!Q[x].duipai_OK){
printf("你");
printf("花了%dmin打完了数据生成器以及暴力程序\n",Q[x].duipai_baoli);
testtime-=Q[x].duipai_baoli;
}
}
Q[x].duipai_OK=1;
int asdasdasd=0,Next=-1;
printf("对拍中......\n");
Sleep(1000);
for(int i=1;i<=200;i++){
int asd;
while(1){
asd=Rand(1,100);
if(asd^Next)break;
}
Next=asd;
if(asd<=Q[x].gua_num1*5+Q[x].gua_num2*10+Q[x].gua_num3*50-(100-Q[x].bufen_fen[Q[x].Now_think]))asdasdasd++;
}
printf("你一共对拍了200组,挂掉了%d组\n",asdasdasd);
}
}
Sleep(1000);
system("pause");
system("cls");
while(1){
if(testtime<=0){
printf("考试结束了!\n");
Sleep(1000);
return;
}
printf("考试剩余时间:%dmin\n",testtime);
printf("现在你要干什么?\n");
printf("1.继续检查\n2.干点别的事情\n");
scanf("%d",&a);
if(a==1||a==2){
break;
}else{
printf("输入不合法!\n");
Sleep(1000);
system("cls");
}
}
system("cls");
if(a==1){
check(x);
}else{
return;
}
}
void code(int x){//写第x题
int a;
while(1){
printf("考试剩余时间:%dmin\n",testtime);
printf("你决定写T%d的%d分做法\n当前代码进度:",x,Q[x].bufen_fen[Q[x].Now_think]);
// printf("{{%d|%d %d}}\n",Q[x].Now_think,Q[x].now_code,Q[x].real_code[Q[x].Now_think]);
Do(Q[x].now_code,Q[x].real_code[Q[x].Now_think]);
printf("\n你打算写多久?\n");
scanf("%d",&a);
if(testtime<=0){
printf("考试结束了!\n"),Sleep(1000);return;
}
if(a<0){
printf("输入不合法\n");Sleep(1000);system("cls");continue;
}
if(a==0){
printf("你写了个寂寞!\n");Sleep(1000);system("cls");continue;
}
if(a>testtime){
printf("你没有那么多时间了!\n");Sleep(1000);system("cls");continue;
}
break;
}
system("cls");
printf("你决定写%dmin\n",a);
if(Q[x].now_code+a<Q[x].real_code[Q[x].Now_think]){
testtime-=a;
Q[x].now_code+=a;
int z,Next=-1;
for(int i=1;i<=a;i++){
int asd;
while(1){
asd=Rand(1,100000);
if(asd^Next)break;
}
Next=asd;
if(asd<=65*Gua-100*Q[x].gua_num1){
Q[x].gua_num1++;
}else if(asd<=95*Gua-100*Q[x].gua_num2){
Q[x].gua_num2++;
}else if(asd<=100*Gua-100*Q[x].gua_num3){
Q[x].gua_num3++;
}
}
printf("%d分钟过去了\n你的代码进度:",a);
Do(Q[x].now_code,Q[x].real_code[Q[x].Now_think]);
printf("\n");
while(1){
if(testtime<=0){
printf("考试结束了!\n");
Sleep(1000);
return;
}
printf("考试剩余时间:%dmin\n",testtime);
printf("现在你要干什么?\n");
printf("1.继续写\n2.干点别的事情\n");
scanf("%d",&z);
if(z==1||z==2){
break;
}else{
printf("输入不合法!\n"),Sleep(1000),system("cls");
}
}
system("cls");
if(z==1){
code(x);
}else{
return;
}
}else{
int Next=-1;
for(int i=1;i<=Q[x].real_code[Q[x].Now_think]-Q[x].now_code;i++){
int asd;
while(1){
asd=Rand(1,100000);
if(asd^Next) break;
}
Next=asd;
if(asd<=65*Gua-100*Q[x].gua_num1){
Q[x].gua_num1++;
}else if(asd<=95*Gua-100*Q[x].gua_num2){
Q[x].gua_num2++;
}else if(asd<=100*Gua-100*Q[x].gua_num3){
Q[x].gua_num3++;
}
}
// printf("(((%d %d)))\n",Q[x].real_code[Q[x].Now_think],Q[x].now_code);
testtime-=max(Q[x].real_code[Q[x].Now_think]-Q[x].now_code,0);
printf("只过去了%dmin,你就写完了这道题的%d分做法!\n",max(Q[x].real_code[Q[x].Now_think]-Q[x].now_code,0),Q[x].bufen_fen[Q[x].Now_think]);
kkk[x]=3;
Q[x].now_code+=max(Q[x].real_code[Q[x].Now_think]-Q[x].now_code,0);
Q[x].maybe_socer=max(Q[x].maybe_socer,Q[x].bufen_fen[Q[x].Now_think]);
Q[x].code_better=max(Q[x].code_better,Q[x].Now_think);
int z;
while(1){
if(testtime<=0){
printf("考试结束了!\n");
Sleep(1000);
return;
}
printf("考试剩余时间:%dmin\n",testtime);
printf("现在你要干什么?\n1.检查这道题\n2.重新思考\n3.干点别的事情\n");
scanf("%d",&z);
if(z==1||z==2||z==3){
break;
}else{
printf("输入不合法!\n");
Sleep(1000);
system("cls");
}
}
system("cls");
if(z==1){
check(x);
}else if(z==2){
kkk[x]=1;
Think(x);
}else{
return;
}
}
}
void Think(int x){//想第x题
int a;
while(1){
if(testtime<=0){
printf("考试结束了!\n");
Sleep(1000);
return;
}
if(Q[x].Now_think){
int z;
while(1){
printf("考试剩余时间:%dmin\n你决定思考T%d\n",testtime,x);
look(x,1);
printf("你打算做什么?\n");
printf("1.继续思考此题的%d分做法(当前进度:",Q[x].bufen_fen[Q[x].Now_think]);
Do(Q[x].now_think,Q[x].all_think[Q[x].Now_think]);
printf(")\n2.思考此题的其它分数的做法\n3.干点别的事情\n");
scanf("%d",&z);
if(z==1||z==2||z==3)break;
printf("输入不合法\n");
Sleep(1000);
system("cls");
}
if(z==1){
break;
}else if(z==2){
Q[x].Now_think=0,system("cls");
}else{
return;
}
}else{
int b;
while(1){
printf("考试剩余时间:%dmin\n你决定思考T%d\n",testtime,x);
look(x,1);
printf("你打算做什么?\n");
for(int i=1;i<=Q[x].bufen;i++)printf("%d.思考%d分的代码\n",i,Q[x].bufen_fen[i]);
printf("%d.干点别的事情\n",Q[x].bufen+1);
scanf("%d",&b);
if(1<=b&&b<=Q[x].bufen+1)break;
printf("输入不合法!\n");
Sleep(1000);
system("cls");
}
if(b==Q[x].bufen+1){
return;
}
Q[x].Now_think=b;
break;
}
}
system("cls");
while(1){
printf("考试剩余时间:%dmin\n",testtime);
printf("你决定思考T%d的%d分做法\n",x,Q[x].bufen_fen[Q[x].Now_think]);
printf("你的思考进度:");
Do(Q[x].now_think,Q[x].all_think[Q[x].Now_think]);
printf("\n");
printf("你决定思考多久?\n");
scanf("%d",&a);
if(a<0){
printf("输入不合法\n");
Sleep(1000);
system("cls");
continue;
}
if(a==0){
printf("你思考了个寂寞!\n");
Sleep(1000);
system("cls");
continue;
}
if(a>testtime){
printf("你没有那么多时间了!\n");
Sleep(1000);
system("cls");
continue;
}
break;
}
system("cls");
printf("你决定思考%dmin\n",a);
if(Q[x].now_think+a<Q[x].all_think[Q[x].Now_think]){
testtime-=a,Q[x].now_think+=a;
int z;
printf("%d分钟过去了\n你的思考进度:",a);
Do(Q[x].now_think,Q[x].all_think[Q[x].Now_think]);
printf("\n");
while(1){
if(testtime<=0){
printf("考试结束了!\n");
Sleep(1000);
return;
}
printf("考试剩余时间:%dmin\n",testtime);
printf("现在你要干什么?\n");
printf("1.继续思考\n2.干点别的事情\n");
scanf("%d",&z);
if(z==1||z==2){
break;
}else{
printf("输入不合法!\n");
Sleep(1000);
system("cls");
}
}//a_blue_cell
system("cls");
if(z==1){
Think(x);
}else{
return;
}
}else{
int QaQ=max(Q[x].all_think[Q[x].Now_think]-Q[x].now_think,0);
Q[x].now_think+=QaQ,testtime-=QaQ;
printf("只过去了%dmin,你就想出了这道题!\n",QaQ);
kkk[x]=2;
int z;
while(1){
if(testtime<=0){
printf("考试结束了!\n");
Sleep(1000);
return;
}
printf("考试剩余时间:%dmin\n现在你要干什么?\n1.写这道题\n2.干点别的事情\n",testtime);
scanf("%d",&z);
if(z==1||z==2){
break;
}else{
printf("输入不合法!\n");
Sleep(1000);
system("cls");
}
}
system("cls");
if(z==1){
code(x);
}else{
return;
}
}
}
int ans;
void test(){
while(1){
if(testtime<=0)break;
int x;
while(1){
printf("考试剩余时间:%dmin\n现在你要干什么?\n",testtime);
for(int i=1;i<=4;i++){
if(kkk[i]==0){
printf("%d.看T%d\n",i,i);
}else if(kkk[i]==1){
printf("%d.想T%d\n",i,i);
}else if(kkk[i]==2){
printf("%d.写T%d\n",i,i);
}else{
printf("%d.再看看T%d\n",i,i);
}
}
printf("5.浪费时间\n");
printf("6.吃食物(还可执行%d次,耗时1min,可以让你有去厕所的资格)\n",Food);
printf("7.去厕所(还可执行%d次,耗时3min,有大概率让你灵光乍现,但有极极极小概率被困厕所)\n",Bathroom);
scanf("%d",&x);
if(1<=x&&x<=7){
break;
}else{
printf("输入不合法!\n");
Sleep(1000);
system("cls");
}
}
if(x==7){
if(!Bathroom){
printf("你现在不需要去厕所!\n");
Sleep(1000);
system("cls");
continue;
}
if(testtime<3){
printf("你现在没有时间了!\n");
Sleep(1000);
system("cls");
continue;
}
testtime-=3;
Bathroom--;
printf("你花了3min去了厕所\n");
if(Rand(1,10000)==5408){
printf("然后你发现你忘了带纸QAQ\n");
Sleep(1000);
printf("于是你绝望地等到了考试结束\n");
testtime=0;
Sleep(1000);
system("cls");
}else{
/*
1.瞬间差错
2.思路打开
*/
int OK1=0,OK2=0;
for(int i=1;i<=4;i++){
if(Q[i].gua_num1+Q[i].gua_num2+Q[i].gua_num3){
OK1=1;
break;
}
}
for(int i=1;i<=4;i++){
if(kkk[i]==1&&Q[x].Now_think!=0){
OK2=1;
break;
}
}
if(OK1||OK2){
int Which=Rand(1,2);
for(int iii=1;iii<=2;iii++){
if(Which==1){
if(!OK1){
Which=2;
}
}
if(Which==2){
if(!OK2){
Which=1;
}
}
}
if(Which==1){
int ee=Rand(1,4);
while(1){
if(Q[ee].gua_num1+Q[ee].gua_num2+Q[ee].gua_num3)break;
ee++;
if(ee==5)ee=1;
}
if(Q[ee].gua_num1){
int asdasd=Rand(min(Q[ee].gua_num1,2),min(Q[ee].gua_num1,5));
Q[ee].gua_num1-=asdasd;
printf("然后你立马意识到你的T%d有%d个小错误\n",ee,asdasd);
}else if(Q[ee].gua_num2){
int asdasd=Rand(min(Q[ee].gua_num2,2),min(Q[ee].gua_num2,5));
Q[ee].gua_num2-=asdasd;
printf("然后你立马意识到你的T%d有%d个一般错误\n",ee,asdasd);
}else{
int asdasd=Rand(min(Q[ee].gua_num3,2),min(Q[ee].gua_num3,5));
Q[ee].gua_num3-=asdasd;
printf("然后你立马意识到你的T%d有%d个大错误\n",ee,asdasd);
}
printf("并且回来立马改正了它们\n");
Sleep(2000);
system("cls");
}
if(Which==2){
int ee=Rand(1,4);
while(1){
if(kkk[ee]==1)break;
ee++;
if(ee==5)ee=1;
}
// printf("(%d %d)\n",Q[x].now_think,Q[x].all_think[Q[x].Now_think]);
printf("然后你灵感乍现,对于T%d有了思路!\n",ee);
Q[ee].now_think+=Rand(min(Q[ee].all_think[Q[ee].Now_think]-Q[ee].now_think,0),min(Q[ee].all_think[Q[ee].Now_think]-Q[ee].now_think,20));
Sleep(2000);
system("cls");
}
}else{
printf("然后什么也没有发生\n");
}
Sleep(1000);
system("cls");
}
continue;
}
if(x==6){
if(!Food){
printf("你现在没有食物!\n");
Sleep(1000);
system("cls");
continue;
}
if(testtime<=0){
printf("你现在没有时间了!\n");
Sleep(1000);
system("cls");
continue;
}
testtime--;
Food--;
Bathroom++;
printf("你花了1min吃了一个食物\n");
Sleep(1000);
system("cls");
continue;
}
system("cls");
if(x==5){
int y;
while(1){
printf("考试剩余时间:%dmin\n",testtime);
printf("你打算浪费多久时间?\n");
scanf("%d",&y);
if(y<0){
printf("输入不合法!\n");
Sleep(1000);
system("cls");
}else if(y==0){
printf("你浪费了个寂寞!\n");
Sleep(1000);
system("cls");
}else{
if(y>testtime){
printf("你没有那么多时间了!\n");
Sleep(1000);
system("cls");
}else{
break;
}
}
}
testtime-=y;
printf("你浪费了%dmin\n",y);
Sleep(1000);
system("cls");
}else{
if(kkk[x]==0){//看题目
testtime--;
int y;
while(1){
look(x,0);
printf("现在你要干什么?\n");
printf("1.想这道题\n2.干点别的事情\n");
scanf("%d",&y);
if(y==1||y==2){
break;
}else{
printf("输入不合法!\n");
Sleep(1000);
system("cls");
}
}
system("cls");
if(y==1){
Think(x);//想x题
}
}else if(kkk[x]==1){//想题目
system("cls");
Think(x);
}else if(kkk[x]==2){//写题目
int y;
while(1){
look(x,1);
printf("你正在写这道题的%d分做法\n",Q[x].bufen_fen[Q[x].Now_think]);
printf("你的代码进度:");
Do(Q[x].now_code,Q[x].real_code[Q[x].Now_think]);
printf("\n现在你要干什么?\n1.写这道题\n2.干点别的事情\n");
scanf("%d",&y);
if(y==1||y==2){
break;
}else{
printf("输入不合法!\n");
Sleep(1000);
system("cls");
}
}
system("cls");
if(y==1){
code(x);//写x题
}
}else{
int q;
while(1){
printf("你决定再看看T%d\n",x);
printf("你打算怎么做?\n1.检查此题的%d分做法\n2.重新思考\n3.干点别的事情\n",Q[x].bufen_fen[Q[x].code_better]);
scanf("%d",&q);
if(1<=q&&q<=3){
break;
}
printf("输入不合法!\n");
Sleep(1000);
system("cls");
}
system("cls");
if(q==1){
check(x);
}else if(q==2){
kkk[x]=1;
Think(x);
}
}
}
system("cls");
}
printf("考试结束了!\n你的测试结果:\n");
ans=0;
for(int i=1;i<=4;i++){
// printf("((%d))\n",Q[i].maybe_socer);
Q[i].socer=Q[i].maybe_socer;
printf("T%d:\n",i);
int print=0;
if(Q[i].gua_num1+Q[i].gua_num2+Q[i].gua_num3==0||Q[i].socer==0){
Q[i].socer=max(Q[i].socer,0);
ans+=Q[i].socer;
printf("你这道题没有犯任何错误\n预计分数:%d,实际分数:%d\n",Q[i].maybe_socer,Q[i].socer);
continue;
}
printf("你");
if(Q[i].gua_num1){
printf("犯了%d个小错误",Q[i].gua_num1);
print=1;
for(int j=1;j<=Q[i].gua_num1;j++){
Q[i].socer-=Rand(1,4)*5;
}
}
if(Q[i].gua_num2){
if(print)printf(",");
printf("犯了%d个一般错误",Q[i].gua_num2);
print=1;
for(int j=1;j<=Q[i].gua_num2;j++){
Q[i].socer-=Rand(6,10)*5;
}
}
if(Q[i].gua_num3){
if(print)printf(",");
printf("犯了%d个严重错误",Q[i].gua_num3);
print=1;
for(int j=1;j<=Q[i].gua_num3;j++){
Q[i].socer-=Rand(16,20)*5;
}
}
Q[i].socer=max(Q[i].socer,0);
ans+=Q[i].socer;
printf("\n预计分数:%d,实际分数:%d\n",Q[i].maybe_socer,Q[i].socer);
}
printf("总分:%d\n",ans);
system("pause");
}
void code_robot(int now_x,int Time){
int Next=-1;
// printf("(((||%d %d)))\n",Q[now_x].real_code[y],Gua);
for(int i=1;i<=Time;i++){
int asd;
while(1){
asd=Rand(1,100000);
if(asd^Next){
break;
}
}
Next=asd;
if(asd<=65*Gua-100*Q[now_x].gua_num1){
// printf("小");
Q[now_x].gua_num1++;
}else if(asd<=95*Gua-100*Q[now_x].gua_num2){
// printf("中");
Q[now_x].gua_num2++;
}else if(asd<=100*Gua-100*Q[now_x].gua_num3){
// printf("大");
Q[now_x].gua_num3++;
}
}
// printf("\n");
// printf("{{{%d}}}\n",now_x);
// printf("在函数中:(((%d %d %d)))\n",Q[now_x].gua_num1,Q[now_x].gua_num2,Q[now_x].gua_num3);
}
int check_robot_yangli(int now_x){
for(int i=1;i<=Q[now_x].Yangli;i++){
if(Q[now_x].Yangli_strength[i]<=Q[now_x].gua_num1*5+Q[now_x].gua_num2*10+Q[now_x].gua_num3*50+100-Q[now_x].bufen_fen[Q[now_x].bufen]){
return 1;
}
}
return 0;
}
int check_robot_duipai(int now_x,int &Give_you_time,int &Duipai,int &zhuangtai){
if(Give_you_time<=0){
return 0;
}
if(Q[now_x].duipai){
int asd=Q[now_x].duipai_baoli;//对拍前需要的准备时间
if(!Duipai){
asd++;
}
if(asd>=Give_you_time){
Give_you_time-=asd;
if(!Duipai){
Duipai=1;
}
}else{
return 0;
}
int asdasdasd=0,Next=-1;
for(int i=1;i<=200;i++){
int asd;
while(1){
asd=Rand(1,100);
if(asd^Next){
break;
}
}
Next=asd;
if(asd<=Q[now_x].gua_num1*5+Q[now_x].gua_num2*10+Q[now_x].gua_num3*50-100+Q[now_x].bufen_fen[Q[now_x].bufen]){
asdasdasd=1;
break;
}
}
if(asdasdasd){
zhuangtai=-1;
return 1;
}else{
zhuangtai=-2;
return 0;
}
}else{
zhuangtai=-2;
return 0;
}
}
int No[6]={};//这个是喂给机器人的
void check_robot_jingtai(int now_x,int &Give_you_time,int &Duipai){
// printf("\n(%d)",Give_you_time);
if(Give_you_time==0){
return;
}
int check_time;
if(Give_you_time<=10){
check_time=Give_you_time;
}else{
check_time=10;
}
Give_you_time-=check_time;
// printf("\nNow:%d3\n+++++++++\n",Give_you_time);
int num1=0,num2=0,num3=0,Next=-1;
for(int i=1;i<=check_time;i++){
int asd;
while(1){
asd=Rand(1,100);
if(asd^Next)break;
}
Next=asd;
if(asd<=99&&Q[now_x].gua_num3){
Q[now_x].gua_num3--;
num3++;
}else if(asd<=20&&Q[now_x].gua_num2){
Q[now_x].gua_num2--;
num2++;
}else if(asd<=1&&Q[now_x].gua_num1){
Q[now_x].gua_num1--;
num1++;
}
}
if(check_robot_yangli(now_x)){
check_robot_jingtai(now_x,Give_you_time,Duipai);
return;
}
if(check_robot_duipai(now_x,Give_you_time,Duipai,No[now_x])){
check_robot_jingtai(now_x,Give_you_time,Duipai);
return;
}
}
int test_robot(){
for(int i=0;i<=5;i++){
No[i]=0;
}
int opop=0,now_x=1,all=0,Duipai=0;
/*
节约出的时间
现在正在处理哪一道
处理了,但是有锅(负数为检查相关,-1优先,-2其次,123为打了哪个部分分,114514为看都没看)
是否所有题都至少走了一遍
是否写了对拍程序
*/
testtime-=4;//这个是看题的时间
while(1){
if(all){
break;
}
if(testtime<=0)break;
int Give_you_time=opop+59;//一道题最多花这么久
int beifen=Give_you_time;
int youthink=Q[now_x].all_think[Q[now_x].bufen];
// printf("{{{%d}}}\n",youthink);
// printf("(((((%d %d)))))\n",Q[now_x].all_think[Q[now_x].bufen],);
if(youthink<=30){
// printf("((%d))\n",now_x);
Give_you_time-=youthink;
Give_you_time-=Q[now_x].real_code[Q[now_x].bufen];
if(testtime<youthink+Q[now_x].real_code[Q[now_x].bufen]){
testtime=0;
continue;
}
// printf("{{{%d}}}\n",Q[now_x].real_code[Q[now_x].bufen]);
code_robot(now_x,Q[now_x].real_code[Q[now_x].bufen]);
Q[now_x].maybe_socer=100;
// printf("(((%d %d %d)))\n",Q[now_x].gua_num1,Q[now_x].gua_num2,Q[now_x].gua_num3);
int have_gua=check_robot_yangli(now_x);//是否有写挂的
if(have_gua){
check_robot_jingtai(now_x,Give_you_time,Duipai);
}else{
if(check_robot_duipai(now_x,Give_you_time,Duipai,No[now_x])){
check_robot_jingtai(now_x,Give_you_time,Duipai);
}
}
now_x++;
opop=Give_you_time;
testtime=testtime-(beifen-Give_you_time);
}else if(youthink<=60){
if(Give_you_time>=90){
Give_you_time-=youthink,Give_you_time-=Q[now_x].real_code[Q[now_x].bufen];
if(testtime<youthink+Q[now_x].real_code[Q[now_x].bufen]){
testtime=0;
continue;
}
code_robot(now_x,Q[now_x].real_code[Q[now_x].bufen]);
Q[now_x].maybe_socer=100;
int have_gua=check_robot_yangli(now_x);
if(have_gua){
check_robot_jingtai(now_x,Give_you_time,Duipai);
}else{
if(check_robot_duipai(now_x,Give_you_time,Duipai,No[now_x])){
check_robot_jingtai(now_x,Give_you_time,Duipai);
}
}
}else{
int Choose=0;
for(int i=Q[now_x].bufen-1;i>=1;i--){
if(Q[now_x].all_think[i]<=30){
Choose=i;
break;
}
}
if(!Choose){
Give_you_time-=Q[now_x].all_think[Choose],Give_you_time-=Q[now_x].real_code[Choose];
if(testtime<Q[now_x].all_think[Choose]+Q[now_x].real_code[Choose]){
testtime=0;
continue;
}
code_robot(now_x,Q[now_x].real_code[Choose]);
No[now_x]=Choose;
Q[now_x].maybe_socer=Q[now_x].bufen_fen[Choose];
}else{
No[now_x]=114514;
}
}
testtime=testtime-(beifen-Give_you_time);
now_x++;
opop=Give_you_time;
}else{
int Choose=0;
for(int i=Q[now_x].bufen-1;i>=1;i--){
if(Q[now_x].all_think[i]<=30){
Choose=i;
break;
}
}
if(!Choose){
Give_you_time-=Q[now_x].all_think[Choose];
Give_you_time-=Q[now_x].real_code[Choose];
if(testtime<Q[now_x].all_think[Choose]+Q[now_x].real_code[Choose]){
testtime=0;
continue;
}
code_robot(now_x,Q[now_x].real_code[Choose]);
No[now_x]=Choose,Q[now_x].maybe_socer=Q[now_x].bufen_fen[Choose];
}else{
No[now_x]=114514;
}
testtime=testtime-(beifen-Give_you_time);
now_x++;
opop=Give_you_time;
}
if(now_x==5){
all=1;
}
}
//第一个循环用于吃食物
while(1){
if(!Food)break;
if(testtime<4)break;
Food--,testtime-=4;
int OK1=0;//是否有检查的必要
for(int i=1;i<=4;i++){
if(Q[i].gua_num1+Q[i].gua_num2+Q[i].gua_num3){
OK1=1;
break;
}
}
if(!OK1){
break;
}
int ee=Rand(1,4);
while(1){
if(Q[ee].gua_num1+Q[ee].gua_num2+Q[ee].gua_num3)break;
ee++;
if(ee==5)ee=1;
}
if(Q[ee].gua_num1){
int asdasd=Rand(min(Q[ee].gua_num1,2),min(Q[ee].gua_num1,5));
Q[ee].gua_num1-=asdasd;
}else if(Q[ee].gua_num2){
int asdasd=Rand(min(Q[ee].gua_num2,2),min(Q[ee].gua_num2,5));
Q[ee].gua_num2-=asdasd;
}else{
int asdasd=Rand(min(Q[ee].gua_num3,2),min(Q[ee].gua_num3,5));
Q[ee].gua_num3-=asdasd;
}
}
int OK=0,I=0;
// printf("Time for 1");
while(1){//优先考虑把题做完
if(testtime<=0){
break;
}
OK=0;
for(int i=I+1;i<=4;i++){
if(No[i]>0&&No[i]!=114514){
OK=1,I=i;
break;
}
}
if(OK){
int youthink=Q[now_x].all_think[Q[now_x].bufen]-Q[now_x].all_think[No[I]];
if(youthink+15<=testtime){
testtime=testtime-youthink-(Q[now_x].real_code[Q[now_x].bufen]-Q[now_x].real_code[No[I]]);
if(testtime<0){
break;
}
code_robot(I,Q[now_x].real_code[Q[now_x].bufen]-Q[now_x].real_code[No[I]]);
}
}else{
break;
}
}
OK=I=0;
// printf("Time for 2");
while(1){//再考虑检查一些需要先检查的题目
if(testtime<=0){
break;
}
OK=0;
for(int i=I+1;i<=4;i++){
if(No[i]==-1){
OK=1,I=i;
break;
}
}
if(OK){//检查这道题
while(1){
if(testtime<=0){
break;
}
check_robot_jingtai(I,testtime,Duipai);
if(!check_robot_yangli(I)){//样例没锅
if(!check_robot_duipai(I,testtime,Duipai,No[I])){//对拍也没锅
break;//算他检查完了
}
}
}
}else{
break;
}
}
I=4;
// printf("Time for 3");
while(1){//随便找一道题(T4)检查
if(testtime<=0){
break;
}
check_robot_jingtai(I,testtime,Duipai);
}
// printf("(((%d)))\n",testtime);
int ans=0;
for(int i=1;i<=4;i++){
Q[i].socer=Q[i].maybe_socer;
if(Q[i].gua_num1+Q[i].gua_num2+Q[i].gua_num3==0||Q[i].socer==0){
Q[i].socer=max(Q[i].socer,0);
ans+=Q[i].socer;
continue;
}
if(Q[i].gua_num1){
for(int j=1;j<=Q[i].gua_num1;j++)Q[i].socer-=Rand(1,4)*5;
}
if(Q[i].gua_num2){
for(int j=1;j<=Q[i].gua_num2;j++)Q[i].socer-=Rand(6,10)*5;
}
if(Q[i].gua_num3){
for(int j=1;j<=Q[i].gua_num3;j++)Q[i].socer-=Rand(16,20)*5;
}
Q[i].socer=max(Q[i].socer,0);
ans+=Q[i].socer;
}
return ans;
// printf("总分:%d\n",ans);
}
struct asd{
int num,pre;
bool operator<(const asd other)const{
return pre<other.pre;
}
}a[10],aa[10];
char saf[114514];
void weakness_and_strengh(){
for(int i=1;i<=8;i++){
a[i]=aa[i];
}
sort(a+1,a+1+8);
int kkk=1;
while(1){
if(a[1].pre==a[kkk].pre){
kkk++;
}else{
kkk--;
break;
}
}
printf("你的弱项有:\n");
for(int i=1;i<=kkk;i++) cout<<ma[a[i].num]<<'\n';
kkk=8;
while(1){
if(a[8].pre==a[kkk].pre){
kkk--;
}else{
kkk++;
break;
}
}
printf("你的强项有:\n");
for(int i=kkk;i<=8;i++) cout<<ma[a[i].num]<<'\n';
}
void prepare_you(int x){//1->你自己
en=diff*20,st=en-19;
for(int i=0;i<=8;i++){
Your[i]=Rand(st,en);
// printf("{%d}",Your[i]);//你的每一个数值
if(i>=1){
aa[i].num=i,aa[i].pre=Your[i];
}
}
// printf("\n");
Food=Rand(0,2);
if(x)printf("你带了%d个食物\n",Food),weakness_and_strengh();
Gua=Rand(0,400);///////////////////////
if(x){
if((diff-1)*20+1<=Your[0]&&Your[0]<=(diff-1)*20+4){
printf("你的码力弱爆了\n");
}else if((diff-1)*20+5<=Your[0]&&Your[0]<=(diff-1)*20+8){
printf("你的码力有点弱\n");
}else if((diff-1)*20+9<=Your[0]&&Your[0]<=(diff-1)*20+12){
printf("你的码力一般\n");
}else if((diff-1)*20+13<=Your[0]&&Your[0]<=(diff-1)*20+16){
printf("你的码力很好\n");
}else{
printf("你的码力非常强\n");
}
printf("你的挂分概率:");
if(Gua<=20){
printf("极低\n");
}else if(Gua<=130){
printf("较低\n");
}else if(Gua<=270){
printf("一般\n");
}else if(Gua<=380){
printf("较高\n");
}else{
printf("极高\n");
}
}
}
void prepare_ti(){
for(int i=1;i<=4;i++){
Q[i].num=rand()%2+1,Q[i].bufen=Rand(0,2);
if(Q[i].bufen==1){
Q[i].bufen_fen[1]=Rand(1,19)*5,Q[i].bufen_fen[2]=100;
}else if(Q[i].bufen==2){
Q[i].bufen_fen[1]=Rand(1,10)*5,Q[i].bufen_fen[2]=Rand(11,19)*5,Q[i].bufen_fen[3]=100;
}else{
Q[i].bufen_fen[1]=100;
}
Q[i].bufen++;
// printf("(%d)\n",Q[i].bufen);
// printf("[[[%d]]][[[%d]]][[[%d]]]\n",Q[i].bufen_fen[1],Q[i].bufen_fen[2],Q[i].bufen_fen[3]);
bool A[5]={};
for(int j=1;j<=Q[i].num;j++){
int x;
x=Rand(1,8);
while(1){
if(!flag[x]&&!A[x]){
flag[x]=1,A[x]=1,maxn++;
if(maxn==5){
for(int kk=1;kk<=8;kk++)flag[kk]=0;
maxn=0;
}
break;
}
x++;
if(x==8+1)x=1;
}
Q[i].Need[j]=x;
if(i==1){
Q[i].Time[j]=Rand(5,20);
Q[i].Needab[j]=Rand((diff-1)*20+1,(diff-1)*20+5);
Q[i].codeTime[j]=Rand(5,15);
}else if(i==2){
Q[i].Time[j]=Rand(10,20);
Q[i].codeTime[j]=Rand(10,20);
Q[i].Needab[j]=Rand((diff-1)*20+3,(diff-1)*20+10);
}else if(i==3){
Q[i].Time[j]=Rand(20,40);
Q[i].Needab[j]=Rand((diff-1)*20+5,(diff-1)*20+15);
Q[i].codeTime[j]=Rand(10,40);
}else{
Q[i].Time[j]=Rand(30,60);
Q[i].Needab[j]=Rand((diff-1)*20+7,(diff-1)*20+20);
Q[i].codeTime[j]=Rand(20,60);
Q[i].codeTime[j]=Rand(20+diff*2,60+diff*2);
}
Q[i].real_time[j]=max(1,Q[i].Time[j]-2*(Your[Q[i].Need[j]]-Q[i].Needab[j]));
// printf("Code:%d\n",Q[i].codeTime[j]);
// cout<<ma[Q[i].Need[j]]<<' ';
// printf("Time:%d real Time:%d Need:%d Code:%d\n",Q[i].Time[j],Q[i].real_time[j],Q[i].Needab[j],Q[i].codeTime[j]);
}
// printf("+++\n");
Q[i].code[Q[i].bufen]=0;
Q[i].all_think[Q[i].bufen]=0;
for(int j=1;j<=Q[i].num;j++){
Q[i].code[Q[i].bufen]+=Q[i].codeTime[j];
Q[i].all_think[Q[i].bufen]+=Q[i].real_time[j];
}
Q[i].code[Q[i].bufen]=(int)(ceil((int)(Q[i].code[Q[i].bufen])/Q[i].num));
Q[i].real_code[Q[i].bufen]=Q[i].code[Q[i].bufen]-(Your[0]-10-(diff-1)*20);
Q[i].real_code[Q[i].bufen]=max(1,Q[i].real_code[Q[i].bufen]);
// printf("[[%d]]\n",Q[i].real_code[Q[i].bufen]);
for(int j=1;j<Q[i].bufen;j++){
Q[i].all_think[j]=(int)(Q[i].all_think[Q[i].bufen]*1.0*(Q[i].bufen_fen[j]/100.0)+0.5);
Q[i].all_think[j]=max(Q[i].all_think[j],1);
Q[i].real_code[j]=(int)(Q[i].real_code[Q[i].bufen]*1.0*(Q[i].bufen_fen[j]/100.0)+0.5);
Q[i].real_code[j]=max(Q[i].real_code[j],1);
// printf("(%d %d)\n",Q[i].bufen_fen[j],Q[i].real_code[j]);
}
// printf("++\n");
Q[i].Yangli=Rand(2,5);
for(int j=1,kkk=Q[i].Yangli;j<=Q[i].Yangli;j++,kkk--){
Q[i].Yangli_strength[j]=Rand(1+(kkk-1)*(100/Q[i].Yangli),kkk*(100/Q[i].Yangli));
// printf("{%d %d}\n",1+(j-1)*(100/Q[i].Yangli),j*(100/Q[i].Yangli));
}
Q[i].duipai=Rand(0,1);
if(Your[0]<=10){
Q[i].duipai_baoli=1;
}else{
Q[i].duipai_baoli=2;
}
// printf("Think:%d\n",Q[i].all_think[Q[i].bufen]);
// printf("code time:%d real code time:%d\n",Q[i].code[Q[i].bufen],Q[i].real_code[Q[i].bufen]);
// printf("+++\n");
}
}
void prepare_ti_robot(){//需要针对AI判定具体的代码时间等
for(int i=1;i<=4;i++){
for(int j=1;j<=Q[i].num;j++){
// printf("{{%d %d %d}}\n",Q[i].Time[j],Your[Q[i].Need[j]],Q[i].Needab[j]);
Q[i].real_time[j]=Q[i].Time[j]-2*(Your[Q[i].Need[j]]-Q[i].Needab[j]);
Q[i].real_time[j]=max(1,Q[i].real_time[j]);
}
Q[i].all_think[Q[i].bufen]=0;
// printf("asdasdasd DDIIIEWW %d\n",Q[i].all_think[Q[i].bufen]);
for(int j=1;j<=Q[i].num;j++){
Q[i].all_think[Q[i].bufen]+=Q[i].real_time[j];
}
// printf("asdasdasd %d\n",Q[i].all_think[Q[i].bufen]);
// printf("+++\n");
Q[i].real_code[Q[i].bufen]=Q[i].code[Q[i].bufen]-(Your[0]-10-(diff-1)*20);
Q[i].real_code[Q[i].bufen]=max(1,Q[i].real_code[Q[i].bufen]);
for(int j=1;j<Q[i].bufen;j++){
Q[i].all_think[j]=(int)(Q[i].all_think[Q[i].bufen]*1.0*(Q[i].bufen_fen[j]/100.0)+0.5);
Q[i].all_think[j]=max(Q[i].all_think[j],1);
Q[i].real_code[j]=(int)(Q[i].real_code[Q[i].bufen]*1.0*(Q[i].bufen_fen[j]/100.0)+0.5);
Q[i].real_code[j]=max(Q[i].real_code[j],1);
}
}
}
int fenshuxian[120];//在赛季模式中用AI测定分数线
void peiyangshengcheng(int x){//在培养中生成角色
int lei=Rand(1,1000);
if(lei<=140){
if(!x){
printf("你是一个不会OI,文化课也很一般的学生。一次阴差阳错的机会,你进入了竞赛班学习OI\n");
for(int i=1;i<=8;i++){
aa[i].num=i;
}
}
whk[x]=Rand(301,600);
zhuanxin[x]=Rand(1,60);
Guaping[x]=Rand(100,400);
}else if(lei<=480){
if(!x){
printf("你是一个优秀的文化课学生,在老师建议下,你进入了竞赛班学习OI\n");
for(int i=1;i<=8;i++){
aa[i].num=i;
}
}
whk[x]=Rand(1,150);
zhuanxin[x]=Rand(1,100);
Guaping[x]=Rand(0,400);
}else if(lei<=630){
if(!x)printf("你是一个有一定OI基础的学生,但是文化课不咋地\n");
for(int i=1;i<=8;i++){
fact[x][i]=Rand(1,5);
if(!x)aa[i].num=i;
}
fact[x][0]=Rand(1,5);
whk[x]=Rand(300,600);
zhuanxin[x]=Rand(1,80);
Guaping[x]=Rand(100,400);
}else if(lei<=960){
if(!x)printf("你是一个有一定OI基础的学生,文化课成绩也不错\n");
for(int i=1;i<=8;i++){
fact[x][i]=Rand(1,5);
if(!x)aa[i].num=i;
}
fact[x][0]=Rand(1,5);
whk[x]=Rand(150,300);
zhuanxin[x]=Rand(1,100);
Guaping[x]=Rand(0,400);
}else{
if(!x)printf("你是一个“种子选手”,不仅文化课成绩不错,OI学习也比普通人优秀一点\n");
for(int i=1;i<=8;i++){
fact[x][i]=Rand(2,6);
if(!x)aa[i].num=i;
}
fact[x][0]=Rand(2,6);
whk[x]=Rand(1,150);
zhuanxin[x]=Rand(20,100);
Guaping[x]=Rand(0,200);
}
if(x){
return ;
}
if(zhuanxin[x]>90){
printf("你上课时几乎不走神");
}else if(zhuanxin[x]>60){
printf("你上课时偶尔走神");
}else if(zhuanxin[x]>40){
printf("你上课时可能走神");
}else if(zhuanxin[x]>10){
printf("你上课时会走神");
}else{
printf("你上课时经常走神");
}
printf(",");
if(Guaping[x]<=20){
printf("几乎不犯粗心的错误\n");
}else if(Guaping[x]<=130){
printf("偶尔会犯粗心的错误\n");
}else if(Guaping[x]<=270){
printf("可能会犯粗心的错误\n");
}else if(Guaping[x]<=380){
printf("会犯粗心的错误\n");
}else{
printf("经常犯粗心的错误\n");
}
}
void PeiYang(){/////重点更新对象
for(int i=1;i<=50;i++){
peiyangshengcheng(i);
}
/*
you
robot??
*/
// printf(" you ");
// for(int j=0;j<=8;j++){
// printf("%d ",fact[0][j]);
// }
// printf("%d %d %d\n",whk[0],zhuanxin[0],Guaping[0]);
// for(int i=1;i<=50;i++){
// printf("robot%d ",i);
// if(i<=9){
// printf(" ");
// }
// for(int j=0;j<=8;j++){
// printf("%d ",fact[i][j]);
// }
// printf("%d %d %d\n",whk[i],zhuanxin[i],Guaping[i]);
// }
}
int main(){
srand(time(0)),ma[1]="暴力",ma[2]="树论",ma[3]="数学",ma[4]="图论",ma[5]="思维",ma[6]="数据结构",ma[7]="动态规划",ma[8]="模拟";
int x;
while(1){
printf("请选择你的模式:\n1.单次测试\n2.赛季模拟\n3.培养一个OIer(测试)\n");
scanf("%d",&x);
if(x==1||x==2||x==3) break;
printf("输入不合法!");
Sleep(500);
system("cls");
}
if(x==1){
diff=1,prepare_you(1),prepare_ti(),printf("请记下你的数据,准备开始游戏\n"),system("pause"),system("cls"),test();return 0;
}
if(x==3){
peiyangshengcheng(0);
printf("记录下你的数据,即将开始\n");
system("pause");
PeiYang();
return 0;
}
diff=Rand(1,5);
prepare_you(1);
for(int i=0;i<=8;i++){
Your_bei[i]=Your[i];
}
Gua_bei=Gua;
printf("\n");
if(diff==1){
printf("你的水平:CSP初赛");
}else if(diff==2){
printf("你的水平:CSP复赛");
}else if(diff==3){
printf("你的水平:NOIP");
}else if(diff==4){
printf("你的水平:省选");
}else{
printf("你的水平:NOI");
}
printf("\n\n");
// for(int i=1;i<=Q[1].bufen;i++){
// printf("{{{%d}}}\n",Q[1].bufen_fen[i]);
// }
printf("请记下你的数据,准备开始游戏\n");
system("pause");
system("cls");
for(int i=1;i<=5;i++){
if(i==1){
printf("当前测试:CSP初赛");
}else if(i==2){
printf("当前测试:CSP复赛");
}else if(i==3){
printf("当前测试:NOIP");
}else if(i==4){
printf("当前测试:省选");
}else{
printf("当前测试:NOI");
}
printf("\n");
system("pause");
testtime=240;
diff=i;
for(int j=1;j<=4;j++){
Q[j].clear();
kkk[j]=0;
}
Food=Rand(0,2);
prepare_ti();
for(int j=1;j<=4;j++){
QQ[j]=Q[j];
}
test();
for(int i=1;i<=100;i++){
prepare_you(0);
for(int j=1;j<=4;j++){
Q[j].clear();
kkk[j]=0;
Q[j]=QQ[j];
}
// printf("(((%d %d %d %d %d %d %d %d %d)))\n",Your[0],Your[1],Your[2],Your[3],Your[4],Your[5],Your[6],Your[7],Your[8]);
prepare_ti_robot();
testtime=240;
fenshuxian[i]=test_robot();
// printf("((%d))\n",fenshuxian[i]);
}
Sleep(1000);
sort(fenshuxian+1,fenshuxian+1+100);
int Die=0;
for(int i=1;i<=5;i++)
{
if(i==1){
Die=fenshuxian[50];
}else if(i==2){
Die=fenshuxian[55];
}else if(i==3){
Die=fenshuxian[60];
}else if(i==4){
Die=fenshuxian[65];
}else if(i==5){
Die=fenshuxian[70];
}
}
printf("分数线:%d\n",Die);
Sleep(1000);
if(ans<Die){
printf("你没能通过本次测试\n所以结束啦QAQ\n");
system("pause");
return 0;
}
for(int i=0;i<=8;i++){
Your[i]=Your_bei[i];
}
Gua=Gua_bei;
system("cls");
}
printf("恭喜!你通过了所有的测试!");
system("pause");
return 0;
}