Oler模拟器


#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;
}

posted @ 2024-01-28 11:22  RTER  阅读(406)  评论(0)    收藏  举报