From 095824b3906336ce51297aaf22d82366605fcf33 Mon Sep 17 00:00:00 2001 From: Ginger88895 Date: Sat, 25 Jan 2014 19:57:13 -0500 Subject: [PATCH] Cleared everything --- 0_6_1.cpp | 535 --------------------------------- README.md | 1 + enclosure.exe | Bin 167973 -> 0 bytes log.tar.gz | Bin 20480 -> 0 bytes log0.in | 41 --- log0.out | 41 --- log1.in | 2 - log1.out | 2 - log2.in | 2 - log2.out | 2 - log3.in | 2 - log3.out | 2 - orz_0_0.cpp | 285 ------------------ orz_0_1.cpp | 291 ------------------ orz_0_2.cpp | 303 ------------------- orz_0_3.cpp | 303 ------------------- orz_0_4.cpp | 308 ------------------- orz_0_4_1.cpp | 364 ----------------------- orz_0_4_1.exe | Bin 74039 -> 0 bytes orz_0_4_2.cpp | 364 ----------------------- orz_0_4_3.cpp | 443 ---------------------------- orz_0_5.cpp | 451 ---------------------------- orz_0_5_1.cpp | 531 --------------------------------- orz_0_5_1.exe | Bin 154200 -> 0 bytes orz_0_6.cpp | 535 --------------------------------- orz_0_6_1.cpp | 535 --------------------------------- orz_0_6_2.cpp | 621 -------------------------------------- orz_0_6_3.cpp | 560 ----------------------------------- orz_0_6_3.exe | Bin 156344 -> 0 bytes orz_0_6_4.cpp | 657 ----------------------------------------- orz_0_6_6.cpp | 558 ----------------------------------- orz_0_6_8.cpp | 801 -------------------------------------------------- orz_0_6_8.exe | Bin 167973 -> 0 bytes 33 files changed, 1 insertion(+), 8539 deletions(-) delete mode 100644 0_6_1.cpp create mode 100644 README.md delete mode 100644 enclosure.exe delete mode 100644 log.tar.gz delete mode 100644 log0.in delete mode 100644 log0.out delete mode 100644 log1.in delete mode 100644 log1.out delete mode 100644 log2.in delete mode 100644 log2.out delete mode 100644 log3.in delete mode 100644 log3.out delete mode 100644 orz_0_0.cpp delete mode 100644 orz_0_1.cpp delete mode 100644 orz_0_2.cpp delete mode 100644 orz_0_3.cpp delete mode 100644 orz_0_4.cpp delete mode 100644 orz_0_4_1.cpp delete mode 100644 orz_0_4_1.exe delete mode 100644 orz_0_4_2.cpp delete mode 100644 orz_0_4_3.cpp delete mode 100644 orz_0_5.cpp delete mode 100644 orz_0_5_1.cpp delete mode 100644 orz_0_5_1.exe delete mode 100644 orz_0_6.cpp delete mode 100644 orz_0_6_1.cpp delete mode 100644 orz_0_6_2.cpp delete mode 100644 orz_0_6_3.cpp delete mode 100644 orz_0_6_3.exe delete mode 100644 orz_0_6_4.cpp delete mode 100644 orz_0_6_6.cpp delete mode 100644 orz_0_6_8.cpp delete mode 100644 orz_0_6_8.exe diff --git a/0_6_1.cpp b/0_6_1.cpp deleted file mode 100644 index 5d22656..0000000 --- a/0_6_1.cpp +++ /dev/null @@ -1,535 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#define state_up 0 -#define state_down 1 -#define state_die -1 -#define ID_0 0 -#define ID_1 1 -#define ID_2 2 -#define ID_3 3 -#define mode_start 0 -#define mode_right 1 -#define mode_up 2 -#define mode_left 3 -#define mode_down 4 -#define mode_halt 5 -using namespace std; -int map[15][15]; -int minimap[4][15][15]; -int now[4],tot[4],area[4]; -int m,n,j,k; -int x[4],y[4],state[4],trappedleft[4],scoredecline[4]; -int now_id; -int edge_color[15][15][15][15]; -int timeleft[200]; -int mode=mode_start; -unsigned int relative_distance[4][15][15][15][15]; -class dot -{ - public: - int x; - int y; -}; -class player -{ - public: - dot* position; - int ID; - int score; - int state; - int trappedleft; - int num; - dot* road[300]; - player(int ID,int x,int y) - { - position=new dot; - position->x=x; - position->y=y; - this->ID=ID; - score=4-ID; - state=state_up; - trappedleft=0; - num=0; - } - void insert(int x,int y) - { - num++; - road[num]=new dot; - road[num]->x=x; - road[num]->y=y; - } - void clear() - { - num=0; - } - void change(int x,int y) - { - position->x=x; - position->y=y; - } - void down() - { - this->state=state_down; - } - void up() - { - this->state=state_up; - } - void die() - { - this->state=state_die; - } - void paint() - { - int i,j,k; - for(i=1;i<=10;i++) - for(j=1;j<=10;j++) - { - bool left=false; - bool right=false; - bool top=false; - bool bottom=false; - for(k=2;k<=num;k++) - { - if(road[k-1]->x==road[k]->x&&road[k-1]->y==road[k]->y) continue; - if(road[k-1]->x==road[k]->x) - { - if(road[k-1]->yy) - { - if(j==road[k]->y&&i>road[k]->x) top=true; - if(j==road[k]->y&&i<=road[k]->x) bottom=true; - } - if(road[k-1]->y>road[k]->y) - { - if(j==road[k-1]->y&&i>road[k]->x) top=true; - if(j==road[k-1]->y&&i<=road[k]->x) bottom=true; - } - continue; - } - if(road[k-1]->y==road[k]->y) - { - if(road[k-1]->xx) - { - if(i==road[k]->x&&j>road[k]->y) left=true; - if(i==road[k]->x&&j<=road[k]->y) right=true; - } - if(road[k-1]->x>road[k]->x) - { - if(i==road[k-1]->x&&j>road[k]->y) left=true; - if(i==road[k-1]->x&&j<=road[k]->y) right=true; - } - } - } - if(top&&bottom&&left&&right) - { - if(-1==map[i][j]) - { - minimap[ID][i][j]=1; - } - } - } - num=0; - } -}; - -class enclosure -{ - public: - player* player0; - player* player1; - player* player2; - player* player3; - enclosure(int x0,int y0,int x1,int y1,int x2,int y2,int x3,int y3) - { - player0=new player(ID_0,x0,y0); - player1=new player(ID_1,x1,y1); - player2=new player(ID_2,x2,y2); - player3=new player(ID_3,x3,y3); - } - enclosure(){} - void pass(int ID,int x,int y,int state) - { - if(state_die==state) - { - if(ID_0==ID) {player0->die();if(player0->road[1]->x==x&&player0->road[1]->y==y){player0->insert(x,y);player0->paint();player0->clear();}} - if(ID_1==ID) {player1->die();if(player1->road[1]->x==x&&player1->road[1]->y==y){player1->insert(x,y);player1->paint();player1->clear();}} - if(ID_2==ID) {player2->die();if(player2->road[1]->x==x&&player2->road[1]->y==y){player2->insert(x,y);player2->paint();player2->clear();}} - if(ID_3==ID) {player3->die();if(player3->road[1]->x==x&&player3->road[1]->y==y){player3->insert(x,y);player3->paint();player3->clear();}} - } - if(state_up==state) - { - if(ID_0==ID) - { - if(state_down==player0->state) player0->insert(x,y); - player0->paint(); - player0->up(); - player0->clear(); - player0->insert(x,y); - } - if(ID_1==ID) - { - if(state_down==player1->state) player1->insert(x,y); - player1->paint(); - player1->up(); - player1->clear(); - player1->insert(x,y); - } - if(ID_2==ID) - { - if(state_down==player2->state) player2->insert(x,y); - player2->paint(); - player2->up(); - player2->clear(); - player2->insert(x,y); - } - if(ID_3==ID) - { - if(state_down==player3->state) player3->insert(x,y); - player3->paint(); - player3->up(); - player3->clear(); - player3->insert(x,y); - } - } - if(state_down==state) - { - if(ID_0==ID) - { - player0->down(); - player0->insert(x,y); - } - if(ID_1==ID) - { - player1->down(); - player1->insert(x,y); - } - if(ID_2==ID) - { - player2->down(); - player2->insert(x,y); - } - if(ID_3==ID) - { - player3->down(); - player3->insert(x,y); - } - } - if(ID_0==ID) player0->change(x,y); - if(ID_1==ID) player1->change(x,y); - if(ID_2==ID) player2->change(x,y); - if(ID_3==ID) player3->change(x,y); - } - void make() - { - int i,j,k; - for(i=0;i<=3;i++) - for(j=1;j<=10;j++) - for(k=1;k<=10;k++) - { - if(1==minimap[i][j][k]) tot[i]++; - } - - for(j=1;j<=10;j++) - for(k=1;k<=10;k++) - { - int mini=10000000; - int minID=-1; - for(int s=0;s<=3;s++) - if(tot[s]score=player0->score+area[0]*area[0]*10; - player1->score=player1->score+area[1]*area[1]*10; - player2->score=player2->score+area[2]*area[2]*10; - player3->score=player3->score+area[3]*area[3]*10; - for(i=0;i<=3;i++) - if(0!=area[i]) now[i]++; - memset(minimap,0,sizeof(minimap)); - memset(area,0,sizeof(area)); - memset(tot,0,sizeof(tot)); - } -}; -dot bind[200]; -enclosure* game; -ofstream fout1(".\\output1.txt"); -ofstream fout2(".\\output2.txt"); -ofstream fout3(".\\output3.txt"); -ofstream fout4(".\\output4.txt"); -void generate_output(int diff_x,int diff_y,int other_action) -{ - cout<<"[ACTION] "; - if(diff_x==0&&diff_y==0) cout<<"s "; - else if(diff_x==0&&diff_y==1) cout<<"d "; - else if(diff_x==0&&diff_y==-1) cout<<"u "; - else if(diff_x==1&&diff_y==0) cout<<"r "; - else if(diff_x==-1&&diff_y==0) cout<<"l "; - cout<0) - { - //Upward Road - if(j==0||j==10||map[i][j]!=map[i][j+1]||map[i][j]==-1||map[i][j+1]==-1) edge_color[i][j][i-1][j]=-1; - else edge_color[i][j][i-1][j]=map[i][j]; - } - if(i<10) - { - //Downward Road - if(j==0||j==10||map[i+1][j]!=map[i+1][j+1]||map[i+1][j]==-1||map[i+1][j+1]==-1) edge_color[i][j][i+1][j]=-1; - else edge_color[i][j][i+1][j]=map[i+1][j+1]; - } - if(j>0) - { - //Leftward Road - if(i==0||i==10||map[i][j]!=map[i+1][j]||map[i][j]==-1||map[i+1][j]==-1) edge_color[i][j][i][j-1]=-1; - else edge_color[i][j][i][j-1]=map[i+1][j]; - } - if(j<10) - { - //Rightward Road - if(i==0||i==10||map[i][j+1]!=map[i+1][j+1]||map[i][j+1]==-1||map[i+1][j+1]==-1) edge_color[i][j][i][j+1]=-1; - else edge_color[i][j][i][j+1]=map[i][j+1]; - } - } - } -} -int update_distance(dot* start_point,int ID) -{ - //Todo: - //1. Get unpassable lines - //2. Do a bfs - //Note: - //1. An edge label 400 means specially defined unpassable lines - //2. This update process is only valid for a certain ID, i.e. the defined player - unsigned int tmp_distance[15][15]; - bool in_queue[15][15]; - memset(tmp_distance,0xff,sizeof(tmp_distance)); - memset(in_queue,0,sizeof(in_queue)); - queue* q=new queue; - q->push(start_point); - tmp_distance[start_point->x][start_point->y]=0; - while((!q->empty())) - { - dot* tmp=q->front(); - q->pop(); - in_queue[tmp->x][tmp->y]=false; - if((tmp->x>0)&&(edge_color[tmp->x][tmp->y][tmp->x-1][tmp->y]==-1)&&(tmp_distance[tmp->x-1][tmp->y]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x-1][tmp->y]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x-1; - tmp2->y=tmp->y; - if(!in_queue[tmp->x-1][tmp->y]) - { - q->push(tmp2); - in_queue[tmp->x-1][tmp->y]=true; - } - } - if((tmp->x<10)&&(edge_color[tmp->x][tmp->y][tmp->x+1][tmp->y]==-1)&&(tmp_distance[tmp->x+1][tmp->y]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x+1][tmp->y]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x+1; - tmp2->y=tmp->y; - if(!in_queue[tmp->x+1][tmp->y]) - { - q->push(tmp2); - in_queue[tmp->x+1][tmp->y]=true; - } - } - if((tmp->y>0)&&(edge_color[tmp->x][tmp->y][tmp->x][tmp->y-1]==-1)&&(tmp_distance[tmp->x][tmp->y-1]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x][tmp->y-1]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x; - tmp2->y=tmp->y-1; - if(!in_queue[tmp->x][tmp->y-1]) - { - q->push(tmp2); - in_queue[tmp->x][tmp->y-1]=true; - } - } - if((tmp->y<10)&&(edge_color[tmp->x][tmp->y][tmp->x][tmp->y+1]==-1)&&(tmp_distance[tmp->x][tmp->y+1]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x][tmp->y+1]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x; - tmp2->y=tmp->y+1; - if(!in_queue[tmp->x][tmp->y+1]) - { - q->push(tmp2); - in_queue[tmp->x][tmp->y+1]=true; - } - } - } - for(int i=0;i<=10;i++) for(int j=0;j<=10;j++) relative_distance[ID][start_point->x][start_point->y][i][j]=tmp_distance[i][j]; - return -1; -} -void brain() -{ - update_edge_status(); - update_distance(game->player0->position,0); - update_distance(game->player1->position,1); - update_distance(game->player2->position,2); - update_distance(game->player3->position,3); - int now_x,now_y; - switch(now_id) - { - case 0: - now_x=game->player0->position->x; - now_y=game->player0->position->y; - break; - case 1: - now_x=game->player1->position->x; - now_y=game->player1->position->y; - break; - case 2: - now_x=game->player2->position->x; - now_y=game->player2->position->y; - break; - case 3: - now_x=game->player3->position->x; - now_y=game->player3->position->y; - break; - default: - break; - } - //Finite State Machine - if(mode==mode_start) - { - mode=mode_right; - } - else if(mode==mode_right) - { - if(now_x==10&&now_y==10) mode=mode_up; - } - else if(mode==mode_up) - { - if(now_x==0&&now_y==10) mode=mode_left; - } - else if(mode==mode_left) - { - if(now_x==0&&now_y==0) mode=mode_down; - } - else if(mode==mode_down) - { - if(now_x==10&&now_y==0) mode=mode_halt; - } - //Output Area - if(mode==mode_right&&now_y==0) - { - generate_output(0,1,1); - } - else if(mode==mode_right) - { - generate_output(0,1,0); - } - else if(mode==mode_up) - { - generate_output(-1,0,0); - } - else if(mode==mode_left) - { - generate_output(0,-1,0); - } - else if(mode==mode_down) - { - generate_output(1,0,0); - } - else if(mode==mode_halt) - { - generate_output(0,0,0); - } - //Debug Output - fout1<<"---MAP---"<>label; - cin>>now_id; - cout<<"[POS] 10 0"<>label; - for(int i=0;i<=3;i++) - { - cin>>x[i]>>y[i]>>state[i]>>trappedleft[i]>>scoredecline[i]; - } - if(!started) - { - started=true; - game=new enclosure(x[0],y[0],x[1],y[1],x[2],y[2],x[3],y[3]); - } - game->pass(ID_0,x[0],y[0],state[0]); - game->pass(ID_1,x[1],y[1],state[1]); - game->pass(ID_2,x[2],y[2],state[2]); - game->pass(ID_3,x[3],y[3],state[3]); - game->make(); - int total; - cin>>total; - for(int i=1;i<=total;i++) - { - cin>>bind[i].x>>bind[i].y>>timeleft[i]; - } - brain(); - } -} diff --git a/README.md b/README.md new file mode 100644 index 0000000..a3c5a43 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +This repository is cleared because it's no longer support by its owner. diff --git a/enclosure.exe b/enclosure.exe deleted file mode 100644 index d2b576ba6e2a1f53c57210e85dc4c45dc1c6b899..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167973 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≪^2<{vcLZq~eKz=zZpfbc0L|4+hBehpCyY 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 HM;Q16fbl+4 diff --git a/log0.in b/log0.in deleted file mode 100644 index 9537c02..0000000 --- a/log0.in +++ /dev/null @@ -1,41 +0,0 @@ -[START] 0 -[STATUS] 10 0 0 0 0 5 5 0 0 0 5 5 0 0 0 5 5 0 0 0 0 -[STATUS] 10 1 1 0 0 5 5 0 4 0 4 5 0 0 -10 5 5 0 4 0 2 5 4 2 5 6 2 -[STATUS] 10 2 1 0 0 5 5 0 3 0 5 5 0 0 -20 5 5 0 3 0 5 5 4 1 5 6 1 4 5 2 4 4 2 4 6 2 -[STATUS] 10 3 1 0 0 5 5 0 4 0 4 5 0 4 -30 5 5 0 4 0 4 5 4 2 5 6 2 4 4 1 4 6 1 -[STATUS] 10 4 1 0 0 5 5 0 3 0 4 5 0 3 -30 5 5 0 3 0 2 5 4 1 5 6 1 -[STATUS] 10 5 1 0 0 5 5 0 2 0 4 5 0 2 -30 5 5 0 2 0 0 -[STATUS] 10 6 1 0 0 5 5 0 1 0 4 5 0 1 -30 5 5 0 1 0 0 -[STATUS] 10 7 1 0 0 5 5 0 0 0 4 5 0 0 -30 5 5 0 0 0 0 -[STATUS] 10 8 1 0 0 6 5 0 0 0 4 4 0 0 -30 5 4 0 0 0 0 -[STATUS] 10 9 1 0 0 5 5 0 0 0 5 4 0 0 -30 6 4 0 0 0 0 -[STATUS] 10 10 1 0 0 5 5 0 0 0 5 4 0 0 -30 6 5 0 0 0 0 -[STATUS] 9 10 1 0 0 5 5 0 0 0 4 4 0 0 -30 6 6 0 0 0 0 -[STATUS] 8 10 1 0 0 5 6 0 0 0 5 4 0 0 -30 6 7 0 0 0 0 -[STATUS] 7 10 1 0 0 5 5 0 0 0 4 4 0 0 -30 6 6 0 0 0 0 -[STATUS] 6 10 1 0 0 5 6 0 0 0 3 4 0 0 -30 6 6 0 0 0 0 -[STATUS] 5 10 1 0 0 5 5 0 0 0 3 4 0 0 -30 6 5 0 0 0 0 -[STATUS] 4 10 1 0 0 6 5 1 0 0 4 4 1 0 -30 7 5 -1 0 0 0 -[STATUS] 3 10 1 0 0 7 5 1 0 0 5 4 1 0 -30 7 5 -1 0 0 0 -[STATUS] 2 10 1 0 0 7 4 1 0 0 5 3 1 0 -30 7 5 -1 0 0 0 -[STATUS] 1 10 1 0 0 7 3 1 0 0 5 2 1 0 -30 7 5 -1 0 0 0 -[STATUS] 0 10 1 0 0 6 3 1 0 0 4 2 1 0 -30 7 5 -1 0 0 0 -[STATUS] 0 9 1 0 0 5 3 1 0 0 3 2 -1 0 -30 7 5 -1 0 0 0 -[STATUS] 0 8 1 0 0 5 4 1 0 0 3 2 -1 0 -30 7 5 -1 0 0 0 -[STATUS] 0 7 1 0 0 5 5 0 0 0 3 2 -1 0 -30 7 5 -1 0 0 0 -[STATUS] 0 6 1 0 0 5 5 0 0 0 3 2 -1 0 -30 7 5 -1 0 0 0 -[STATUS] 0 5 1 0 0 4 5 0 0 0 3 2 -1 0 -30 7 5 -1 0 0 0 -[STATUS] 0 4 1 0 0 4 6 0 0 0 3 2 -1 0 -30 7 5 -1 0 0 0 -[STATUS] 0 3 1 0 0 4 5 0 0 0 3 2 -1 0 -30 7 5 -1 0 0 0 -[STATUS] 0 2 1 0 0 3 5 0 0 0 3 2 -1 0 -30 7 5 -1 0 0 0 -[STATUS] 0 1 1 0 0 3 4 0 0 0 3 2 -1 0 -30 7 5 -1 0 0 0 -[STATUS] 0 0 1 0 0 3 4 0 0 0 3 2 -1 0 -30 7 5 -1 0 0 0 -[STATUS] 1 0 1 0 0 4 4 0 0 -10 3 2 -1 0 -30 7 5 -1 0 0 3 3 4 2 3 3 2 3 5 2 -[STATUS] 2 0 1 0 0 4 4 0 0 -10 3 2 -1 0 -30 7 5 -1 0 0 3 3 4 1 3 3 1 3 5 1 -[STATUS] 3 0 1 0 0 4 3 0 0 -20 3 2 -1 0 -30 7 5 -1 0 0 3 3 4 2 4 4 2 5 4 2 -[STATUS] 4 0 1 0 0 3 3 0 0 -20 3 2 -1 0 -30 7 5 -1 0 0 3 3 4 1 4 4 1 5 4 1 -[STATUS] 5 0 1 0 0 3 4 0 4 -20 3 2 -1 0 -30 7 5 -1 0 0 0 -[STATUS] 6 0 1 0 0 3 4 0 3 -20 3 2 -1 0 -30 7 5 -1 0 0 0 -[STATUS] 7 0 1 0 0 3 4 0 2 -20 3 2 -1 0 -30 7 5 -1 0 0 0 -[STATUS] 8 0 1 0 0 3 4 0 1 -20 3 2 -1 0 -30 7 5 -1 0 0 0 -[STATUS] 9 0 1 0 0 3 4 0 0 -20 3 2 -1 0 -30 7 5 -1 0 0 0 diff --git a/log0.out b/log0.out deleted file mode 100644 index beb4f94..0000000 --- a/log0.out +++ /dev/null @@ -1,41 +0,0 @@ -[POS] 10 0 -[ACTION] d 1 -[ACTION] d 0 -[ACTION] d 0 -[ACTION] d 0 -[ACTION] d 0 -[ACTION] d 0 -[ACTION] d 0 -[ACTION] d 0 -[ACTION] d 0 -[ACTION] d 0 -[ACTION] l 0 -[ACTION] l 0 -[ACTION] l 0 -[ACTION] l 0 -[ACTION] l 0 -[ACTION] l 0 -[ACTION] l 0 -[ACTION] l 0 -[ACTION] l 0 -[ACTION] l 0 -[ACTION] u 0 -[ACTION] u 0 -[ACTION] u 0 -[ACTION] u 0 -[ACTION] u 0 -[ACTION] u 0 -[ACTION] u 0 -[ACTION] u 0 -[ACTION] u 0 -[ACTION] u 0 -[ACTION] r 0 -[ACTION] r 0 -[ACTION] r 0 -[ACTION] r 0 -[ACTION] r 0 -[ACTION] r 0 -[ACTION] r 0 -[ACTION] r 0 -[ACTION] r 0 -[ACTION] r 0 diff --git a/log1.in b/log1.in deleted file mode 100644 index 461cad1..0000000 --- a/log1.in +++ /dev/null @@ -1,2 +0,0 @@ -[START] 1 -[STATUS] 10 0 0 0 0 10 0 0 0 0 5 5 0 0 0 5 5 0 0 0 0 diff --git a/log1.out b/log1.out deleted file mode 100644 index 7a08867..0000000 --- a/log1.out +++ /dev/null @@ -1,2 +0,0 @@ -[POS] 10 0 -[ACTION] d 1 diff --git a/log2.in b/log2.in deleted file mode 100644 index 1f184c7..0000000 --- a/log2.in +++ /dev/null @@ -1,2 +0,0 @@ -[START] 2 -[STATUS] 10 0 0 0 0 10 0 0 0 0 10 0 0 0 0 5 5 0 0 0 0 diff --git a/log2.out b/log2.out deleted file mode 100644 index 7a08867..0000000 --- a/log2.out +++ /dev/null @@ -1,2 +0,0 @@ -[POS] 10 0 -[ACTION] d 1 diff --git a/log3.in b/log3.in deleted file mode 100644 index cc43ba8..0000000 --- a/log3.in +++ /dev/null @@ -1,2 +0,0 @@ -[START] 3 -[STATUS] 10 0 0 0 0 10 0 0 0 0 10 0 0 0 0 10 0 0 0 0 0 diff --git a/log3.out b/log3.out deleted file mode 100644 index 7a08867..0000000 --- a/log3.out +++ /dev/null @@ -1,2 +0,0 @@ -[POS] 10 0 -[ACTION] d 1 diff --git a/orz_0_0.cpp b/orz_0_0.cpp deleted file mode 100644 index 83f185f..0000000 --- a/orz_0_0.cpp +++ /dev/null @@ -1,285 +0,0 @@ -#include -#include -#include -//dqb area -#define state_up 0 -#define state_down 1 -#define state_die -1 -#define ID_0 0 -#define ID_1 1 -#define ID_2 2 -#define ID_3 3 -//Soft Ginger area -#define mode_start 0 -#define mode_right 1 -#define mode_up 2 -#define mode_left 3 -#define mode_down 4 -#define mode_halt 5 -//dqb area -using namespace std; -int map[20][20]; -class point -{ - public: - int x; - int y; -}; -class player -{ - public: - point* position; - int ID; - int score; - int state; - int trappedleft; - int num; - point* road[300]; - player(int ID,int x,int y) - { - position->x=x; - position->y=y; - this->ID=ID; - score=4-ID; - state=state_up; - trappedleft=0; - num=0; - } - void insert(int x,int y) - { - num++; - road[num]->x=x; - road[num]->y=y; - } - void change(int x,int y) - { - position->x=x; - position->y=y; - } - void down() - { - this->state=state_down; - } - void up() - { - this->state=state_up; - } - void die() - { - this->state=state_die; - } - void paint() - { - int i,j,k; - int size=0; - for (i=1;i<=10;i++) - for (j=1;j<=10;j++) - { - bool left=false; - bool right=false; - bool top=false; - bool bottom=false; - for (k=2;k<=num;k++) - { - if (road[k-1]->x==road[k]->x&&road[k-1]->y==road[k]->y) continue; - if (road[k-1]->x==road[k]->x) - { - if (road[k-1]->yy) - { - if (j==road[k]->y&&i>road[k]->x) top=true; - if (j==road[k]->y&&i<=road[k]->x) bottom=true; - } - if (road[k-1]->y>road[k]->y) - { - if (j==road[k-1]->y&&i>road[k]->x) top=true; - if (j==road[k-1]->y&&i<=road[k]->x) bottom=true; - } - continue; - } - if (road[k-1]->y==road[k]->y) - { - if (road[k-1]->xx) - { - if (i==road[k]->x&&j>road[k]->y) left=true; - if (i==road[k]->x&&j<=road[k]->y) right=true; - } - if (road[k-1]->x>road[k]->x) - { - if (i==road[k-1]->x&&j>road[k]->y) left=true; - if (i==road[k-1]->x&&j<=road[k]->y) right=true; - } - } - } - if (top&&bottom&&left&&right) - { - if (0==map[i][j]) - { - map[i][j]=ID; - size++; - } - - } - } - score=score+size*size*10; - num=0; - } -}; -class enclosure -{ - public: - player* player0; - player* player1; - player* player2; - player* player3; - enclosure(int x0,int y0,int x1,int y1,int x2,int y2,int x3,int y3) - { - player0=new player(ID_0,x0,y0); - player1=new player(ID_1,x1,y1); - player2=new player(ID_2,x2,y2); - player3=new player(ID_3,x3,y3); - } - enclosure(){} - void pass(int ID,int x,int y,int state) - { - if (state_die==state) - { - if (ID_0==ID) player0->die(); - if (ID_1==ID) player1->die(); - if (ID_2==ID) player2->die(); - if (ID_3==ID) player3->die(); - } - if (state_up==state) - { - if (ID_0==ID) {if (state_down==player0->state) player0->paint();player0->up();} - if (ID_1==ID) {if (state_down==player1->state) player1->paint();player1->up();} - if (ID_2==ID) {if (state_down==player2->state) player2->paint();player2->up();} - if (ID_3==ID) {if (state_down==player3->state) player3->paint();player3->up();} - } - if (state_down==state) - { - if (ID_0==ID) {player0->down();player0->insert(x,y);} - if (ID_1==ID) {player1->down();player1->insert(x,y);} - if (ID_2==ID) {player2->down();player2->insert(x,y);} - if (ID_3==ID) {player3->down();player3->insert(x,y);} - } - if (ID_0==ID) player0->change(x,y); - if (ID_1==ID) player1->change(x,y); - if (ID_2==ID) player2->change(x,y); - if (ID_3==ID) player3->change(x,y); - } -}; -//dqb area -int m,n,i,j,k; -int x[4],y[4],state[4],trappedleft[4],scoredecline[4]; -int now_id; -point bind[200]; -int timeleft[200]; -enclosure* game; -//Soft Ginger area -int mode=mode_start; -void brain() -{ - int now_x,now_y; - switch(now_id) - { - case 0: - now_x=game->player0->position->x; - now_y=game->player0->position->y; - break; - case 1: - now_x=game->player1->position->x; - now_y=game->player1->position->y; - break; - case 2: - now_x=game->player2->position->x; - now_y=game->player2->position->y; - break; - case 3: - now_x=game->player3->position->x; - now_y=game->player3->position->y; - break; - default: - break; - } - //Finite State Machine - if(mode==mode_start) - { - mode=mode_left; - } - else if(mode==mode_left) - { - if(now_x==0&&now_y==0) mode=mode_down; - } - else if(mode==mode_down) - { - if(now_x==0&&now_y==10) mode=mode_right; - } - else if(mode==mode_right) - { - if(now_x==10&&now_y==10) mode=mode_up; - } - else if(mode==mode_up) - { - if(now_x==10&&now_y==0) mode=mode_halt; - } - //State Processing - if(mode==mode_left&&now_y==0) - { - cout<<"[ACTION] r 1"<>label; - cin>>now_id; - cout<<"[POS] 10 0"<>label; - bool started=false; //Update: variable name changed from visited to started - while (true) - { - for (i=0;i<=3;i++) - { - cin>>x[i]>>y[i]>>state[i]>>trappedleft[i]>>scoredecline[i]; - } - if (!started) - { - started=true; - game=new enclosure(x[0],y[0],x[1],y[1],x[2],y[2],x[3],y[3]); - continue; - } - game->pass(ID_0,x[0],y[0],state[0]); - game->pass(ID_1,x[1],y[1],state[1]); - game->pass(ID_2,x[2],y[2],state[2]); - game->pass(ID_3,x[3],y[3],state[3]); - int tot; - cin>>tot; - for (i=1;i<=tot;i++) - { - cin>>bind[i].x>>bind[j].y>>timeleft[i]; - } - //Soft Ginger area - brain(); - //dqb area - } -} diff --git a/orz_0_1.cpp b/orz_0_1.cpp deleted file mode 100644 index 48c93c0..0000000 --- a/orz_0_1.cpp +++ /dev/null @@ -1,291 +0,0 @@ -#include -#include -#include -//dqb area -#define state_up 0 -#define state_down 1 -#define state_die -1 -#define ID_0 0 -#define ID_1 1 -#define ID_2 2 -#define ID_3 3 -//Soft Ginger area -#define mode_start 0 -#define mode_right 1 -#define mode_up 2 -#define mode_left 3 -#define mode_down 4 -#define mode_halt 5 -//dqb area -using namespace std; -int map[20][20]; -int now[4]; -class point -{ - public: - int x; - int y; -}; -class player -{ - public: - point* position; - int ID; - int score; - int state; - int trappedleft; - int num; - point* road[300]; - player(int ID,int x,int y) - { - position->x=x; - position->y=y; - this->ID=ID; - score=4-ID; - state=state_up; - trappedleft=0; - num=0; - } - void insert(int x,int y) - { - num++; - road[num]->x=x; - road[num]->y=y; - } - void change(int x,int y) - { - position->x=x; - position->y=y; - } - void down() - { - this->state=state_down; - } - void up() - { - this->state=state_up; - } - void die() - { - this->state=state_die; - } - void paint() - { - int i,j,k; - int size=0; - for (i=1;i<=10;i++) - for (j=1;j<=10;j++) - { - bool left=false; - bool right=false; - bool top=false; - bool bottom=false; - for (k=2;k<=num;k++) - { - if (road[k-1]->x==road[k]->x&&road[k-1]->y==road[k]->y) continue; - if (road[k-1]->x==road[k]->x) - { - if (road[k-1]->yy) - { - if (j==road[k]->y&&i>road[k]->x) top=true; - if (j==road[k]->y&&i<=road[k]->x) bottom=true; - } - if (road[k-1]->y>road[k]->y) - { - if (j==road[k-1]->y&&i>road[k]->x) top=true; - if (j==road[k-1]->y&&i<=road[k]->x) bottom=true; - } - continue; - } - if (road[k-1]->y==road[k]->y) - { - if (road[k-1]->xx) - { - if (i==road[k]->x&&j>road[k]->y) left=true; - if (i==road[k]->x&&j<=road[k]->y) right=true; - } - if (road[k-1]->x>road[k]->x) - { - if (i==road[k-1]->x&&j>road[k]->y) left=true; - if (i==road[k-1]->x&&j<=road[k]->y) right=true; - } - } - } - if (top&&bottom&&left&&right) - { - if (0==map[i][j]) - { - map[i][j]=now[ID]; - now[ID]++; - size++; - } - - } - } - score=score+size*size*10; - num=0; - } -}; -class enclosure -{ - public: - player* player0; - player* player1; - player* player2; - player* player3; - enclosure(int x0,int y0,int x1,int y1,int x2,int y2,int x3,int y3) - { - player0=new player(ID_0,x0,y0); - player1=new player(ID_1,x1,y1); - player2=new player(ID_2,x2,y2); - player3=new player(ID_3,x3,y3); - } - enclosure(){} - void pass(int ID,int x,int y,int state) - { - if (state_die==state) - { - if (ID_0==ID) player0->die(); - if (ID_1==ID) player1->die(); - if (ID_2==ID) player2->die(); - if (ID_3==ID) player3->die(); - } - if (state_up==state) - { - if (ID_0==ID) {if (state_down==player0->state) player0->paint();player0->up();} - if (ID_1==ID) {if (state_down==player1->state) player1->paint();player1->up();} - if (ID_2==ID) {if (state_down==player2->state) player2->paint();player2->up();} - if (ID_3==ID) {if (state_down==player3->state) player3->paint();player3->up();} - } - if (state_down==state) - { - if (ID_0==ID) {player0->down();player0->insert(x,y);} - if (ID_1==ID) {player1->down();player1->insert(x,y);} - if (ID_2==ID) {player2->down();player2->insert(x,y);} - if (ID_3==ID) {player3->down();player3->insert(x,y);} - } - if (ID_0==ID) player0->change(x,y); - if (ID_1==ID) player1->change(x,y); - if (ID_2==ID) player2->change(x,y); - if (ID_3==ID) player3->change(x,y); - } -}; -//dqb area -int m,n,i,j,k; -int x[4],y[4],state[4],trappedleft[4],scoredecline[4]; -int now_id; -point bind[200]; -int timeleft[200]; -enclosure* game; -//Soft Ginger area -int mode=mode_start; -void brain() -{ - int now_x,now_y; - switch(now_id) - { - case 0: - now_x=game->player0->position->x; - now_y=game->player0->position->y; - break; - case 1: - now_x=game->player1->position->x; - now_y=game->player1->position->y; - break; - case 2: - now_x=game->player2->position->x; - now_y=game->player2->position->y; - break; - case 3: - now_x=game->player3->position->x; - now_y=game->player3->position->y; - break; - default: - break; - } - //Finite State Machine - if(mode==mode_start) - { - mode=mode_left; - } - else if(mode==mode_left) - { - if(now_x==0&&now_y==0) mode=mode_down; - } - else if(mode==mode_down) - { - if(now_x==0&&now_y==10) mode=mode_right; - } - else if(mode==mode_right) - { - if(now_x==10&&now_y==10) mode=mode_up; - } - else if(mode==mode_up) - { - if(now_x==10&&now_y==0) mode=mode_halt; - } - //State Processing - if(mode==mode_left&&now_y==0) - { - cout<<"[ACTION] r 1"<>label; - cin>>now_id; - cout<<"[POS] 10 0"<>label; - bool started=false; //Update: variable name changed from visited to started - while (true) - { - for (i=0;i<=3;i++) - { - cin>>x[i]>>y[i]>>state[i]>>trappedleft[i]>>scoredecline[i]; - } - if (!started) - { - started=true; - game=new enclosure(x[0],y[0],x[1],y[1],x[2],y[2],x[3],y[3]); - continue; - } - game->pass(ID_0,x[0],y[0],state[0]); - game->pass(ID_1,x[1],y[1],state[1]); - game->pass(ID_2,x[2],y[2],state[2]); - game->pass(ID_3,x[3],y[3],state[3]); - int tot; - cin>>tot; - for (i=1;i<=tot;i++) - { - cin>>bind[i].x>>bind[j].y>>timeleft[i]; - } - //Soft Ginger area - brain(); - //dqb area - } -} diff --git a/orz_0_2.cpp b/orz_0_2.cpp deleted file mode 100644 index fe08182..0000000 --- a/orz_0_2.cpp +++ /dev/null @@ -1,303 +0,0 @@ -#include -#include -#include -#include -#include -//dqb area -#define state_up 0 -#define state_down 1 -#define state_die -1 -#define ID_0 0 -#define ID_1 1 -#define ID_2 2 -#define ID_3 3 -//Soft Ginger area -#define mode_start 0 -#define mode_right 1 -#define mode_up 2 -#define mode_left 3 -#define mode_down 4 -#define mode_halt 5 -//dqb area -using namespace std; -int map[20][20]; -int now[4]; -class point -{ - public: - int x; - int y; -}; -class player -{ - public: - point* position; - int ID; - int score; - int state; - int trappedleft; - int num; - point* road[300]; - player(int ID,int x,int y) - { - position=new point; - position->x=x; - position->y=y; - this->ID=ID; - score=4-ID; - state=state_up; - trappedleft=0; - num=0; - } - void insert(int x,int y) - { - num++; - road[num]=new point; - road[num]->x=x; - road[num]->y=y; - } - void change(int x,int y) - { - position->x=x; - position->y=y; - } - void down() - { - this->state=state_down; - } - void up() - { - this->state=state_up; - } - void die() - { - this->state=state_die; - } - void paint() - { - int i,j,k; - int size=0; - for (i=1;i<=10;i++) - for (j=1;j<=10;j++) - { - bool left=false; - bool right=false; - bool top=false; - bool bottom=false; - for (k=2;k<=num;k++) - { - if (road[k-1]->x==road[k]->x&&road[k-1]->y==road[k]->y) continue; - if (road[k-1]->x==road[k]->x) - { - if (road[k-1]->yy) - { - if (j==road[k]->y&&i>road[k]->x) top=true; - if (j==road[k]->y&&i<=road[k]->x) bottom=true; - } - if (road[k-1]->y>road[k]->y) - { - if (j==road[k-1]->y&&i>road[k]->x) top=true; - if (j==road[k-1]->y&&i<=road[k]->x) bottom=true; - } - continue; - } - if (road[k-1]->y==road[k]->y) - { - if (road[k-1]->xx) - { - if (i==road[k]->x&&j>road[k]->y) left=true; - if (i==road[k]->x&&j<=road[k]->y) right=true; - } - if (road[k-1]->x>road[k]->x) - { - if (i==road[k-1]->x&&j>road[k]->y) left=true; - if (i==road[k-1]->x&&j<=road[k]->y) right=true; - } - } - } - if (top&&bottom&&left&&right) - { - if (0==map[i][j]) - { - map[i][j]=now[ID]; - now[ID]++; - size++; - } - - } - } - score=score+size*size*10; - num=0; - } -}; -class enclosure -{ - public: - player* player0; - player* player1; - player* player2; - player* player3; - enclosure(int x0,int y0,int x1,int y1,int x2,int y2,int x3,int y3) - { - player0=new player(ID_0,x0,y0); - player1=new player(ID_1,x1,y1); - player2=new player(ID_2,x2,y2); - player3=new player(ID_3,x3,y3); - } - enclosure(){} - void pass(int ID,int x,int y,int state) - { - if (state_die==state) - { - if (ID_0==ID) player0->die(); - if (ID_1==ID) player1->die(); - if (ID_2==ID) player2->die(); - if (ID_3==ID) player3->die(); - } - if (state_up==state) - { - if (ID_0==ID) {if (state_down==player0->state) player0->paint();player0->up();} - if (ID_1==ID) {if (state_down==player1->state) player1->paint();player1->up();} - if (ID_2==ID) {if (state_down==player2->state) player2->paint();player2->up();} - if (ID_3==ID) {if (state_down==player3->state) player3->paint();player3->up();} - } - if (state_down==state) - { - if (ID_0==ID) {player0->down();player0->insert(x,y);} - if (ID_1==ID) {player1->down();player1->insert(x,y);} - if (ID_2==ID) {player2->down();player2->insert(x,y);} - if (ID_3==ID) {player3->down();player3->insert(x,y);} - } - if (ID_0==ID) player0->change(x,y); - if (ID_1==ID) player1->change(x,y); - if (ID_2==ID) player2->change(x,y); - if (ID_3==ID) player3->change(x,y); - } -}; -//dqb area -int m,n,i,j,k; -int x[4],y[4],state[4],trappedleft[4],scoredecline[4]; -int now_id; -point bind[200]; -int timeleft[200]; -enclosure* game; -//Soft Ginger area -ofstream fout("output.txt"); -int mode=mode_start; -void brain() -{ - int now_x,now_y; - switch(now_id) - { - case 0: - now_x=game->player0->position->x; - now_y=game->player0->position->y; - break; - case 1: - now_x=game->player1->position->x; - now_y=game->player1->position->y; - break; - case 2: - now_x=game->player2->position->x; - now_y=game->player2->position->y; - break; - case 3: - now_x=game->player3->position->x; - now_y=game->player3->position->y; - break; - default: - break; - } - //Finite State Machine - if(mode==mode_start) - { - mode=mode_left; - } - else if(mode==mode_left) - { - if(now_x==0&&now_y==0) mode=mode_down; - } - else if(mode==mode_down) - { - if(now_x==0&&now_y==10) mode=mode_right; - } - else if(mode==mode_right) - { - if(now_x==10&&now_y==10) mode=mode_up; - } - else if(mode==mode_up) - { - if(now_x==10&&now_y==0) mode=mode_halt; - } - //State Processing - if(mode==mode_left&&now_x==10) - { - cout<<"[ACTION] l 1"<>label; - cin>>now_id; - cout<<"[POS] 10 0"<>label; - for (i=0;i<=3;i++) - { - cin>>x[i]>>y[i]>>state[i]>>trappedleft[i]>>scoredecline[i]; - } - if (!started) - { - started=true; - game=new enclosure(x[0],y[0],x[1],y[1],x[2],y[2],x[3],y[3]); - } - game->pass(ID_0,x[0],y[0],state[0]); - game->pass(ID_1,x[1],y[1],state[1]); - game->pass(ID_2,x[2],y[2],state[2]); - game->pass(ID_3,x[3],y[3],state[3]); - int tot; - cin>>tot; - for (i=1;i<=tot;i++) - { - cin>>bind[i].x>>bind[i].y>>timeleft[i]; - } - //Soft Ginger area - brain(); - //dqb area - } -} diff --git a/orz_0_3.cpp b/orz_0_3.cpp deleted file mode 100644 index fe08182..0000000 --- a/orz_0_3.cpp +++ /dev/null @@ -1,303 +0,0 @@ -#include -#include -#include -#include -#include -//dqb area -#define state_up 0 -#define state_down 1 -#define state_die -1 -#define ID_0 0 -#define ID_1 1 -#define ID_2 2 -#define ID_3 3 -//Soft Ginger area -#define mode_start 0 -#define mode_right 1 -#define mode_up 2 -#define mode_left 3 -#define mode_down 4 -#define mode_halt 5 -//dqb area -using namespace std; -int map[20][20]; -int now[4]; -class point -{ - public: - int x; - int y; -}; -class player -{ - public: - point* position; - int ID; - int score; - int state; - int trappedleft; - int num; - point* road[300]; - player(int ID,int x,int y) - { - position=new point; - position->x=x; - position->y=y; - this->ID=ID; - score=4-ID; - state=state_up; - trappedleft=0; - num=0; - } - void insert(int x,int y) - { - num++; - road[num]=new point; - road[num]->x=x; - road[num]->y=y; - } - void change(int x,int y) - { - position->x=x; - position->y=y; - } - void down() - { - this->state=state_down; - } - void up() - { - this->state=state_up; - } - void die() - { - this->state=state_die; - } - void paint() - { - int i,j,k; - int size=0; - for (i=1;i<=10;i++) - for (j=1;j<=10;j++) - { - bool left=false; - bool right=false; - bool top=false; - bool bottom=false; - for (k=2;k<=num;k++) - { - if (road[k-1]->x==road[k]->x&&road[k-1]->y==road[k]->y) continue; - if (road[k-1]->x==road[k]->x) - { - if (road[k-1]->yy) - { - if (j==road[k]->y&&i>road[k]->x) top=true; - if (j==road[k]->y&&i<=road[k]->x) bottom=true; - } - if (road[k-1]->y>road[k]->y) - { - if (j==road[k-1]->y&&i>road[k]->x) top=true; - if (j==road[k-1]->y&&i<=road[k]->x) bottom=true; - } - continue; - } - if (road[k-1]->y==road[k]->y) - { - if (road[k-1]->xx) - { - if (i==road[k]->x&&j>road[k]->y) left=true; - if (i==road[k]->x&&j<=road[k]->y) right=true; - } - if (road[k-1]->x>road[k]->x) - { - if (i==road[k-1]->x&&j>road[k]->y) left=true; - if (i==road[k-1]->x&&j<=road[k]->y) right=true; - } - } - } - if (top&&bottom&&left&&right) - { - if (0==map[i][j]) - { - map[i][j]=now[ID]; - now[ID]++; - size++; - } - - } - } - score=score+size*size*10; - num=0; - } -}; -class enclosure -{ - public: - player* player0; - player* player1; - player* player2; - player* player3; - enclosure(int x0,int y0,int x1,int y1,int x2,int y2,int x3,int y3) - { - player0=new player(ID_0,x0,y0); - player1=new player(ID_1,x1,y1); - player2=new player(ID_2,x2,y2); - player3=new player(ID_3,x3,y3); - } - enclosure(){} - void pass(int ID,int x,int y,int state) - { - if (state_die==state) - { - if (ID_0==ID) player0->die(); - if (ID_1==ID) player1->die(); - if (ID_2==ID) player2->die(); - if (ID_3==ID) player3->die(); - } - if (state_up==state) - { - if (ID_0==ID) {if (state_down==player0->state) player0->paint();player0->up();} - if (ID_1==ID) {if (state_down==player1->state) player1->paint();player1->up();} - if (ID_2==ID) {if (state_down==player2->state) player2->paint();player2->up();} - if (ID_3==ID) {if (state_down==player3->state) player3->paint();player3->up();} - } - if (state_down==state) - { - if (ID_0==ID) {player0->down();player0->insert(x,y);} - if (ID_1==ID) {player1->down();player1->insert(x,y);} - if (ID_2==ID) {player2->down();player2->insert(x,y);} - if (ID_3==ID) {player3->down();player3->insert(x,y);} - } - if (ID_0==ID) player0->change(x,y); - if (ID_1==ID) player1->change(x,y); - if (ID_2==ID) player2->change(x,y); - if (ID_3==ID) player3->change(x,y); - } -}; -//dqb area -int m,n,i,j,k; -int x[4],y[4],state[4],trappedleft[4],scoredecline[4]; -int now_id; -point bind[200]; -int timeleft[200]; -enclosure* game; -//Soft Ginger area -ofstream fout("output.txt"); -int mode=mode_start; -void brain() -{ - int now_x,now_y; - switch(now_id) - { - case 0: - now_x=game->player0->position->x; - now_y=game->player0->position->y; - break; - case 1: - now_x=game->player1->position->x; - now_y=game->player1->position->y; - break; - case 2: - now_x=game->player2->position->x; - now_y=game->player2->position->y; - break; - case 3: - now_x=game->player3->position->x; - now_y=game->player3->position->y; - break; - default: - break; - } - //Finite State Machine - if(mode==mode_start) - { - mode=mode_left; - } - else if(mode==mode_left) - { - if(now_x==0&&now_y==0) mode=mode_down; - } - else if(mode==mode_down) - { - if(now_x==0&&now_y==10) mode=mode_right; - } - else if(mode==mode_right) - { - if(now_x==10&&now_y==10) mode=mode_up; - } - else if(mode==mode_up) - { - if(now_x==10&&now_y==0) mode=mode_halt; - } - //State Processing - if(mode==mode_left&&now_x==10) - { - cout<<"[ACTION] l 1"<>label; - cin>>now_id; - cout<<"[POS] 10 0"<>label; - for (i=0;i<=3;i++) - { - cin>>x[i]>>y[i]>>state[i]>>trappedleft[i]>>scoredecline[i]; - } - if (!started) - { - started=true; - game=new enclosure(x[0],y[0],x[1],y[1],x[2],y[2],x[3],y[3]); - } - game->pass(ID_0,x[0],y[0],state[0]); - game->pass(ID_1,x[1],y[1],state[1]); - game->pass(ID_2,x[2],y[2],state[2]); - game->pass(ID_3,x[3],y[3],state[3]); - int tot; - cin>>tot; - for (i=1;i<=tot;i++) - { - cin>>bind[i].x>>bind[i].y>>timeleft[i]; - } - //Soft Ginger area - brain(); - //dqb area - } -} diff --git a/orz_0_4.cpp b/orz_0_4.cpp deleted file mode 100644 index f847b52..0000000 --- a/orz_0_4.cpp +++ /dev/null @@ -1,308 +0,0 @@ -#include -#include -#include -#include -#include -#define state_up 0 -#define state_down 1 -#define state_die -1 -#define ID_0 0 -#define ID_1 1 -#define ID_2 2 -#define ID_3 3 -#define mode_start 0 -#define mode_right 1 -#define mode_up 2 -#define mode_left 3 -#define mode_down 4 -#define mode_halt 5 -using namespace std; -int map[20][20]; -int now[4]; -int hedge[20][20]; -int vedge[20][20]; -class point -{ - public: - int x; - int y; -}; -class player -{ - public: - point* position; - int ID; - int score; - int state; - int trappedleft; - int num; - point* road[300]; - player(int ID,int x,int y) - { - position=new point; - position->x=x; - position->y=y; - this->ID=ID; - score=4-ID; - state=state_up; - trappedleft=0; - num=0; - } - void insert(int x,int y) - { - num++; - road[num]=new point; - road[num]->x=x; - road[num]->y=y; - } - void clear() - { - num=0; - } - void change(int x,int y) - { - position->x=x; - position->y=y; - } - void down() - { - this->state=state_down; - } - void up() - { - this->state=state_up; - } - void die() - { - this->state=state_die; - } - void paint() - { - int i,j,k; - int size=0; - for (i=1;i<=10;i++) - for (j=1;j<=10;j++) - { - bool left=false; - bool right=false; - bool top=false; - bool bottom=false; - for (k=2;k<=num;k++) - { - if (road[k-1]->x==road[k]->x&&road[k-1]->y==road[k]->y) continue; - if (road[k-1]->x==road[k]->x) - { - if (road[k-1]->yy) - { - if (j==road[k]->y&&i>road[k]->x) top=true; - if (j==road[k]->y&&i<=road[k]->x) bottom=true; - } - if (road[k-1]->y>road[k]->y) - { - if (j==road[k-1]->y&&i>road[k]->x) top=true; - if (j==road[k-1]->y&&i<=road[k]->x) bottom=true; - } - continue; - } - if (road[k-1]->y==road[k]->y) - { - if (road[k-1]->xx) - { - if (i==road[k]->x&&j>road[k]->y) left=true; - if (i==road[k]->x&&j<=road[k]->y) right=true; - } - if (road[k-1]->x>road[k]->x) - { - if (i==road[k-1]->x&&j>road[k]->y) left=true; - if (i==road[k-1]->x&&j<=road[k]->y) right=true; - } - } - } - if (top&&bottom&&left&&right) - { - if (-1==map[i][j]) - { - map[i][j]=now[ID]; - size++; - } - - } - } - if (0!=size) now[ID]++; - score=score+size*size*10; - num=0; - } -}; -class enclosure -{ - public: - player* player0; - player* player1; - player* player2; - player* player3; - enclosure(int x0,int y0,int x1,int y1,int x2,int y2,int x3,int y3) - { - player0=new player(ID_0,x0,y0); - player1=new player(ID_1,x1,y1); - player2=new player(ID_2,x2,y2); - player3=new player(ID_3,x3,y3); - } - enclosure(){} - void pass(int ID,int x,int y,int state) - { - if (state_die==state) - { - if (ID_0==ID) player0->die(); - if (ID_1==ID) player1->die(); - if (ID_2==ID) player2->die(); - if (ID_3==ID) player3->die(); - } - if (state_up==state) - { - if (ID_0==ID) {if (state_down==player0->state) player0->insert(x,y);player0->paint();player0->up();player0->clear();player0->insert(x,y);} - if (ID_1==ID) {if (state_down==player1->state) player1->insert(x,y);player1->paint();player1->up();player1->clear();player1->insert(x,y);} - if (ID_2==ID) {if (state_down==player2->state) player2->insert(x,y);player2->paint();player2->up();player2->clear();player2->insert(x,y);} - if (ID_3==ID) {if (state_down==player3->state) player3->insert(x,y);player3->paint();player3->up();player3->clear();player3->insert(x,y);} - } - if (state_down==state) - { - if (ID_0==ID) {player0->down();player0->insert(x,y);} - if (ID_1==ID) {player1->down();player1->insert(x,y);} - if (ID_2==ID) {player2->down();player2->insert(x,y);} - if (ID_3==ID) {player3->down();player3->insert(x,y);} - } - if (ID_0==ID) player0->change(x,y); - if (ID_1==ID) player1->change(x,y); - if (ID_2==ID) player2->change(x,y); - if (ID_3==ID) player3->change(x,y); - } -}; -int m,n,i,j,k; -int x[4],y[4],state[4],trappedleft[4],scoredecline[4]; -int now_id; -point bind[200]; -int timeleft[200]; -enclosure* game; -ofstream fout("output.txt"); -int mode=mode_start; -void update_edge_status() -int enclosure_distance(point p1,point p2) -{ - //Todo: - return -1; -} -void brain() -{ - int now_x,now_y; - switch(now_id) - { - case 0: - now_x=game->player0->position->x; - now_y=game->player0->position->y; - break; - case 1: - now_x=game->player1->position->x; - now_y=game->player1->position->y; - break; - case 2: - now_x=game->player2->position->x; - now_y=game->player2->position->y; - break; - case 3: - now_x=game->player3->position->x; - now_y=game->player3->position->y; - break; - default: - break; - } - if(mode==mode_start) - { - mode=mode_left; - } - else if(mode==mode_left) - { - if(now_x==0&&now_y==0) mode=mode_down; - } - else if(mode==mode_down) - { - if(now_x==0&&now_y==10) mode=mode_right; - } - else if(mode==mode_right) - { - if(now_x==10&&now_y==10) mode=mode_up; - } - else if(mode==mode_up) - { - if(now_x==10&&now_y==0) mode=mode_halt; - } - if(mode==mode_left&&now_x==10) - { - cout<<"[ACTION] l 1"<>label; - cin>>now_id; - cout<<"[POS] 10 0"<>label; - for (i=0;i<=3;i++) - { - cin>>x[i]>>y[i]>>state[i]>>trappedleft[i]>>scoredecline[i]; - } - if (!started) - { - started=true; - game=new enclosure(x[0],y[0],x[1],y[1],x[2],y[2],x[3],y[3]); - } - game->pass(ID_0,x[0],y[0],state[0]); - game->pass(ID_1,x[1],y[1],state[1]); - game->pass(ID_2,x[2],y[2],state[2]); - game->pass(ID_3,x[3],y[3],state[3]); - int tot; - cin>>tot; - for (i=1;i<=tot;i++) - { - cin>>bind[i].x>>bind[i].y>>timeleft[i]; - } - brain(); - } -} diff --git a/orz_0_4_1.cpp b/orz_0_4_1.cpp deleted file mode 100644 index e450b63..0000000 --- a/orz_0_4_1.cpp +++ /dev/null @@ -1,364 +0,0 @@ -#include -#include -#include -#include -#include -#include -#define state_up 0 -#define state_down 1 -#define state_die -1 -#define ID_0 0 -#define ID_1 1 -#define ID_2 2 -#define ID_3 3 -#define mode_start 0 -#define mode_right 1 -#define mode_up 2 -#define mode_left 3 -#define mode_down 4 -#define mode_halt 5 -using namespace std; -int map[20][20][5]; -int now[4]; -int edge_color[20][20][20][20]; -class point -{ - public: - int x; - int y; -}; -class player -{ - public: - point* position; - int ID; - int score; - int state; - int trappedleft; - int num; - point* road[300]; - player(int ID,int x,int y) - { - position=new point; - position->x=x; - position->y=y; - this->ID=ID; - score=4-ID; - state=state_up; - trappedleft=0; - num=0; - } - void insert(int x,int y) - { - num++; - road[num]=new point; - road[num]->x=x; - road[num]->y=y; - } - void clear() - { - num=0; - } - void change(int x,int y) - { - position->x=x; - position->y=y; - } - void down() - { - this->state=state_down; - } - void up() - { - this->state=state_up; - } - void die() - { - this->state=state_die; - } - void paint() - { - int i,j,k; - int size=0; - for (i=1;i<=10;i++) - for (j=1;j<=10;j++) - { - bool left=false; - bool right=false; - bool top=false; - bool bottom=false; - for (k=2;k<=num;k++) - { - if (road[k-1]->x==road[k]->x&&road[k-1]->y==road[k]->y) continue; - if (road[k-1]->x==road[k]->x) - { - if (road[k-1]->yy) - { - if (j==road[k]->y&&i>road[k]->x) top=true; - if (j==road[k]->y&&i<=road[k]->x) bottom=true; - } - if (road[k-1]->y>road[k]->y) - { - if (j==road[k-1]->y&&i>road[k]->x) top=true; - if (j==road[k-1]->y&&i<=road[k]->x) bottom=true; - } - continue; - } - if (road[k-1]->y==road[k]->y) - { - if (road[k-1]->xx) - { - if (i==road[k]->x&&j>road[k]->y) left=true; - if (i==road[k]->x&&j<=road[k]->y) right=true; - } - if (road[k-1]->x>road[k]->x) - { - if (i==road[k-1]->x&&j>road[k]->y) left=true; - if (i==road[k-1]->x&&j<=road[k]->y) right=true; - } - } - } - if (top&&bottom&&left&&right) - { - if (-1==map[i][j]) - { - map[i][j]=now[ID]; - size++; - } - - } - } - if (0!=size) now[ID]++; - score=score+size*size*10; - num=0; - } -}; -class enclosure -{ - public: - player* player0; - player* player1; - player* player2; - player* player3; - enclosure(int x0,int y0,int x1,int y1,int x2,int y2,int x3,int y3) - { - player0=new player(ID_0,x0,y0); - player1=new player(ID_1,x1,y1); - player2=new player(ID_2,x2,y2); - player3=new player(ID_3,x3,y3); - } - enclosure(){} - void pass(int ID,int x,int y,int state) - { - if (state_die==state) - { - if (ID_0==ID) player0->die(); - if (ID_1==ID) player1->die(); - if (ID_2==ID) player2->die(); - if (ID_3==ID) player3->die(); - } - if (state_up==state) - { - if (ID_0==ID) {if (state_down==player0->state) player0->insert(x,y);player0->paint();player0->up();player0->clear();player0->insert(x,y);} - if (ID_1==ID) {if (state_down==player1->state) player1->insert(x,y);player1->paint();player1->up();player1->clear();player1->insert(x,y);} - if (ID_2==ID) {if (state_down==player2->state) player2->insert(x,y);player2->paint();player2->up();player2->clear();player2->insert(x,y);} - if (ID_3==ID) {if (state_down==player3->state) player3->insert(x,y);player3->paint();player3->up();player3->clear();player3->insert(x,y);} - } - if (state_down==state) - { - if (ID_0==ID) {player0->down();player0->insert(x,y);} - if (ID_1==ID) {player1->down();player1->insert(x,y);} - if (ID_2==ID) {player2->down();player2->insert(x,y);} - if (ID_3==ID) {player3->down();player3->insert(x,y);} - } - if (ID_0==ID) player0->change(x,y); - if (ID_1==ID) player1->change(x,y); - if (ID_2==ID) player2->change(x,y); - if (ID_3==ID) player3->change(x,y); - } -}; -int m,n,i,j,k; -int x[4],y[4],state[4],trappedleft[4],scoredecline[4]; -int now_id; -point bind[200]; -int timeleft[200]; -enclosure* game; -ofstream fout1(".\\output1.txt"); -ofstream fout2(".\\output2.txt"); -int mode=mode_start; -void generate_output(int diff_x,int diff_y,int other_action) -{ - cout<<"[ACTION] "; - if(diff_x==0&&diff_y==0) cout<<"s "; - else if(diff_x==0&&diff_y==1) cout<<"d "; - else if(diff_x==0&&diff_y==-1) cout<<"u "; - else if(diff_x==1&&diff_y==0) cout<<"r "; - else if(diff_x==-1&&diff_y==0) cout<<"l "; - cout<0) - { - //Upward Road - if(j==0||j==10||map[i][j]!=map[i][j+1]||map[i][j]==-1||map[i][j+1]==-1) edge_color[i][j][i-1][j]=-1; - else edge_color[i][j][i-1][j]=map[i][j]; - } - if(i<10) - { - //Downward Road - if(j==0||j==10||map[i+1][j]!=map[i+1][j+1]||map[i+1][j]==-1||map[i+1][j+1]==-1) edge_color[i][j][i+1][j]=-1; - else edge_color[i][j][i+1][j]=map[i+1][j+1]; - } - if(j>0) - { - //Leftward Road - if(i==0||i==10||map[i][j]!=map[i+1][j]||map[i][j]==-1||map[i+1][j]==-1) edge_color[i][j][i][j-1]=-1; - else edge_color[i][j][i][j-1]=map[i+1][j]; - } - if(j<10) - { - //Rightward Road - if(i==0||i==10||map[i][j+1]!=map[i+1][j+1]||map[i][j+1]==-1||map[i+1][j+1]==-1) edge_color[i][j][i][j+1]=-1; - else edge_color[i][j][i][j+1]=map[i][j+1]; - } - } - } -} -int enclosure_distance(point p1,point p2,int PID) -{ - //Todo: - return -1; -} -void brain() -{ - update_edge_status(); - int now_x,now_y; - switch(now_id) - { - case 0: - now_x=game->player0->position->x; - now_y=game->player0->position->y; - break; - case 1: - now_x=game->player1->position->x; - now_y=game->player1->position->y; - break; - case 2: - now_x=game->player2->position->x; - now_y=game->player2->position->y; - break; - case 3: - now_x=game->player3->position->x; - now_y=game->player3->position->y; - break; - default: - break; - } - - if(mode==mode_start) - { - mode=mode_right; - } - else if(mode==mode_right) - { - if(now_x==10&&now_y==10) mode=mode_up; - } - else if(mode==mode_up) - { - if(now_x==0&&now_y==10) mode=mode_left; - } - else if(mode==mode_left) - { - if(now_x==0&&now_y==0) mode=mode_down; - } - else if(mode==mode_down) - { - if(now_x==10&&now_y==0) mode=mode_halt; - } - - if(mode==mode_right&&now_y==0) - { - generate_output(0,1,1); - } - else if(mode==mode_right) - { - generate_output(0,1,0); - } - else if(mode==mode_up) - { - generate_output(-1,0,0); - } - else if(mode==mode_left) - { - generate_output(0,-1,0); - } - else if(mode==mode_down) - { - generate_output(1,0,0); - } - else if(mode==mode_halt) - { - generate_output(0,0,0); - } - fout1<<"---MAP---"<>label; - cin>>now_id; - cout<<"[POS] 10 0"<>label; - for (i=0;i<=3;i++) - { - cin>>x[i]>>y[i]>>state[i]>>trappedleft[i]>>scoredecline[i]; - } - if (!started) - { - started=true; - game=new enclosure(x[0],y[0],x[1],y[1],x[2],y[2],x[3],y[3]); - } - game->pass(ID_0,x[0],y[0],state[0]); - game->pass(ID_1,x[1],y[1],state[1]); - game->pass(ID_2,x[2],y[2],state[2]); - game->pass(ID_3,x[3],y[3],state[3]); - int tot; - cin>>tot; - for (i=1;i<=tot;i++) - { - cin>>bind[i].x>>bind[i].y>>timeleft[i]; - } - brain(); - } -} diff --git a/orz_0_4_1.exe b/orz_0_4_1.exe deleted file mode 100644 index 496403c8e88b0116531878484e421b5d95788d6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74039 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 F{{ZO};F$mb diff --git a/orz_0_4_2.cpp b/orz_0_4_2.cpp deleted file mode 100644 index e450b63..0000000 --- a/orz_0_4_2.cpp +++ /dev/null @@ -1,364 +0,0 @@ -#include -#include -#include -#include -#include -#include -#define state_up 0 -#define state_down 1 -#define state_die -1 -#define ID_0 0 -#define ID_1 1 -#define ID_2 2 -#define ID_3 3 -#define mode_start 0 -#define mode_right 1 -#define mode_up 2 -#define mode_left 3 -#define mode_down 4 -#define mode_halt 5 -using namespace std; -int map[20][20][5]; -int now[4]; -int edge_color[20][20][20][20]; -class point -{ - public: - int x; - int y; -}; -class player -{ - public: - point* position; - int ID; - int score; - int state; - int trappedleft; - int num; - point* road[300]; - player(int ID,int x,int y) - { - position=new point; - position->x=x; - position->y=y; - this->ID=ID; - score=4-ID; - state=state_up; - trappedleft=0; - num=0; - } - void insert(int x,int y) - { - num++; - road[num]=new point; - road[num]->x=x; - road[num]->y=y; - } - void clear() - { - num=0; - } - void change(int x,int y) - { - position->x=x; - position->y=y; - } - void down() - { - this->state=state_down; - } - void up() - { - this->state=state_up; - } - void die() - { - this->state=state_die; - } - void paint() - { - int i,j,k; - int size=0; - for (i=1;i<=10;i++) - for (j=1;j<=10;j++) - { - bool left=false; - bool right=false; - bool top=false; - bool bottom=false; - for (k=2;k<=num;k++) - { - if (road[k-1]->x==road[k]->x&&road[k-1]->y==road[k]->y) continue; - if (road[k-1]->x==road[k]->x) - { - if (road[k-1]->yy) - { - if (j==road[k]->y&&i>road[k]->x) top=true; - if (j==road[k]->y&&i<=road[k]->x) bottom=true; - } - if (road[k-1]->y>road[k]->y) - { - if (j==road[k-1]->y&&i>road[k]->x) top=true; - if (j==road[k-1]->y&&i<=road[k]->x) bottom=true; - } - continue; - } - if (road[k-1]->y==road[k]->y) - { - if (road[k-1]->xx) - { - if (i==road[k]->x&&j>road[k]->y) left=true; - if (i==road[k]->x&&j<=road[k]->y) right=true; - } - if (road[k-1]->x>road[k]->x) - { - if (i==road[k-1]->x&&j>road[k]->y) left=true; - if (i==road[k-1]->x&&j<=road[k]->y) right=true; - } - } - } - if (top&&bottom&&left&&right) - { - if (-1==map[i][j]) - { - map[i][j]=now[ID]; - size++; - } - - } - } - if (0!=size) now[ID]++; - score=score+size*size*10; - num=0; - } -}; -class enclosure -{ - public: - player* player0; - player* player1; - player* player2; - player* player3; - enclosure(int x0,int y0,int x1,int y1,int x2,int y2,int x3,int y3) - { - player0=new player(ID_0,x0,y0); - player1=new player(ID_1,x1,y1); - player2=new player(ID_2,x2,y2); - player3=new player(ID_3,x3,y3); - } - enclosure(){} - void pass(int ID,int x,int y,int state) - { - if (state_die==state) - { - if (ID_0==ID) player0->die(); - if (ID_1==ID) player1->die(); - if (ID_2==ID) player2->die(); - if (ID_3==ID) player3->die(); - } - if (state_up==state) - { - if (ID_0==ID) {if (state_down==player0->state) player0->insert(x,y);player0->paint();player0->up();player0->clear();player0->insert(x,y);} - if (ID_1==ID) {if (state_down==player1->state) player1->insert(x,y);player1->paint();player1->up();player1->clear();player1->insert(x,y);} - if (ID_2==ID) {if (state_down==player2->state) player2->insert(x,y);player2->paint();player2->up();player2->clear();player2->insert(x,y);} - if (ID_3==ID) {if (state_down==player3->state) player3->insert(x,y);player3->paint();player3->up();player3->clear();player3->insert(x,y);} - } - if (state_down==state) - { - if (ID_0==ID) {player0->down();player0->insert(x,y);} - if (ID_1==ID) {player1->down();player1->insert(x,y);} - if (ID_2==ID) {player2->down();player2->insert(x,y);} - if (ID_3==ID) {player3->down();player3->insert(x,y);} - } - if (ID_0==ID) player0->change(x,y); - if (ID_1==ID) player1->change(x,y); - if (ID_2==ID) player2->change(x,y); - if (ID_3==ID) player3->change(x,y); - } -}; -int m,n,i,j,k; -int x[4],y[4],state[4],trappedleft[4],scoredecline[4]; -int now_id; -point bind[200]; -int timeleft[200]; -enclosure* game; -ofstream fout1(".\\output1.txt"); -ofstream fout2(".\\output2.txt"); -int mode=mode_start; -void generate_output(int diff_x,int diff_y,int other_action) -{ - cout<<"[ACTION] "; - if(diff_x==0&&diff_y==0) cout<<"s "; - else if(diff_x==0&&diff_y==1) cout<<"d "; - else if(diff_x==0&&diff_y==-1) cout<<"u "; - else if(diff_x==1&&diff_y==0) cout<<"r "; - else if(diff_x==-1&&diff_y==0) cout<<"l "; - cout<0) - { - //Upward Road - if(j==0||j==10||map[i][j]!=map[i][j+1]||map[i][j]==-1||map[i][j+1]==-1) edge_color[i][j][i-1][j]=-1; - else edge_color[i][j][i-1][j]=map[i][j]; - } - if(i<10) - { - //Downward Road - if(j==0||j==10||map[i+1][j]!=map[i+1][j+1]||map[i+1][j]==-1||map[i+1][j+1]==-1) edge_color[i][j][i+1][j]=-1; - else edge_color[i][j][i+1][j]=map[i+1][j+1]; - } - if(j>0) - { - //Leftward Road - if(i==0||i==10||map[i][j]!=map[i+1][j]||map[i][j]==-1||map[i+1][j]==-1) edge_color[i][j][i][j-1]=-1; - else edge_color[i][j][i][j-1]=map[i+1][j]; - } - if(j<10) - { - //Rightward Road - if(i==0||i==10||map[i][j+1]!=map[i+1][j+1]||map[i][j+1]==-1||map[i+1][j+1]==-1) edge_color[i][j][i][j+1]=-1; - else edge_color[i][j][i][j+1]=map[i][j+1]; - } - } - } -} -int enclosure_distance(point p1,point p2,int PID) -{ - //Todo: - return -1; -} -void brain() -{ - update_edge_status(); - int now_x,now_y; - switch(now_id) - { - case 0: - now_x=game->player0->position->x; - now_y=game->player0->position->y; - break; - case 1: - now_x=game->player1->position->x; - now_y=game->player1->position->y; - break; - case 2: - now_x=game->player2->position->x; - now_y=game->player2->position->y; - break; - case 3: - now_x=game->player3->position->x; - now_y=game->player3->position->y; - break; - default: - break; - } - - if(mode==mode_start) - { - mode=mode_right; - } - else if(mode==mode_right) - { - if(now_x==10&&now_y==10) mode=mode_up; - } - else if(mode==mode_up) - { - if(now_x==0&&now_y==10) mode=mode_left; - } - else if(mode==mode_left) - { - if(now_x==0&&now_y==0) mode=mode_down; - } - else if(mode==mode_down) - { - if(now_x==10&&now_y==0) mode=mode_halt; - } - - if(mode==mode_right&&now_y==0) - { - generate_output(0,1,1); - } - else if(mode==mode_right) - { - generate_output(0,1,0); - } - else if(mode==mode_up) - { - generate_output(-1,0,0); - } - else if(mode==mode_left) - { - generate_output(0,-1,0); - } - else if(mode==mode_down) - { - generate_output(1,0,0); - } - else if(mode==mode_halt) - { - generate_output(0,0,0); - } - fout1<<"---MAP---"<>label; - cin>>now_id; - cout<<"[POS] 10 0"<>label; - for (i=0;i<=3;i++) - { - cin>>x[i]>>y[i]>>state[i]>>trappedleft[i]>>scoredecline[i]; - } - if (!started) - { - started=true; - game=new enclosure(x[0],y[0],x[1],y[1],x[2],y[2],x[3],y[3]); - } - game->pass(ID_0,x[0],y[0],state[0]); - game->pass(ID_1,x[1],y[1],state[1]); - game->pass(ID_2,x[2],y[2],state[2]); - game->pass(ID_3,x[3],y[3],state[3]); - int tot; - cin>>tot; - for (i=1;i<=tot;i++) - { - cin>>bind[i].x>>bind[i].y>>timeleft[i]; - } - brain(); - } -} diff --git a/orz_0_4_3.cpp b/orz_0_4_3.cpp deleted file mode 100644 index 26b62cd..0000000 --- a/orz_0_4_3.cpp +++ /dev/null @@ -1,443 +0,0 @@ -#include -#include -#include -#include -#include -#include -#define state_up 0 -#define state_down 1 -#define state_die -1 -#define ID_0 0 -#define ID_1 1 -#define ID_2 2 -#define ID_3 3 -#define mode_start 0 -#define mode_right 1 -#define mode_up 2 -#define mode_left 3 -#define mode_down 4 -#define mode_halt 5 -using namespace std; -int map[20][20]; -int minimap[4][20][20]; -int now[4]; -int tot[4]; -int area[4]; -int edge_color[20][20][20][20]; -class point -{ -public: - int x; - int y; -}; -class player -{ -public: - point* position; - int ID; - int score; - int state; - int trappedleft; - int num; - point* road[300]; - player(int ID,int x,int y) - { - position=new point; - position->x=x; - position->y=y; - this->ID=ID; - score=4-ID; - state=state_up; - trappedleft=0; - num=0; - } - void insert(int x,int y) - { - num++; - road[num]=new point; - road[num]->x=x; - road[num]->y=y; - } - void clear() - { - num=0; - } - void change(int x,int y) - { - position->x=x; - position->y=y; - } - void down() - { - this->state=state_down; - } - void up() - { - this->state=state_up; - } - void die() - { - this->state=state_die; - } - void paint() - { - int i,j,k; - for (i=1;i<=10;i++) - for (j=1;j<=10;j++) - { - bool left=false; - bool right=false; - bool top=false; - bool bottom=false; - for (k=2;k<=num;k++) - { - if (road[k-1]->x==road[k]->x&&road[k-1]->y==road[k]->y) continue; - if (road[k-1]->x==road[k]->x) - { - if (road[k-1]->yy) - { - if (j==road[k]->y&&i>road[k]->x) top=true; - if (j==road[k]->y&&i<=road[k]->x) bottom=true; - } - if (road[k-1]->y>road[k]->y) - { - if (j==road[k-1]->y&&i>road[k]->x) top=true; - if (j==road[k-1]->y&&i<=road[k]->x) bottom=true; - } - continue; - } - if (road[k-1]->y==road[k]->y) - { - if (road[k-1]->xx) - { - if (i==road[k]->x&&j>road[k]->y) left=true; - if (i==road[k]->x&&j<=road[k]->y) right=true; - } - if (road[k-1]->x>road[k]->x) - { - if (i==road[k-1]->x&&j>road[k]->y) left=true; - if (i==road[k-1]->x&&j<=road[k]->y) right=true; - } - } - } - if (top&&bottom&&left&&right) - { - if (-1==map[i][j]) - { - minimap[ID][i][j]=1; - } - } - } - num=0; - } -}; - -class enclosure -{ -public: - player* player0; - player* player1; - player* player2; - player* player3; - enclosure(int x0,int y0,int x1,int y1,int x2,int y2,int x3,int y3) - { - player0=new player(ID_0,x0,y0); - player1=new player(ID_1,x1,y1); - player2=new player(ID_2,x2,y2); - player3=new player(ID_3,x3,y3); - } - enclosure(){} - void pass(int ID,int x,int y,int state) - { - if (state_die==state) - { - if (ID_0==ID) {player0->die();if (player0->road[1]->x==x&&player0->road[1]->y==y){player0->insert(x,y);player0->paint();player0->clear();}} - if (ID_1==ID) {player1->die();if (player1->road[1]->x==x&&player1->road[1]->y==y){player1->insert(x,y);player1->paint();player1->clear();}} - if (ID_2==ID) {player2->die();if (player2->road[1]->x==x&&player2->road[1]->y==y){player2->insert(x,y);player2->paint();player2->clear();}} - if (ID_3==ID) {player3->die();if (player3->road[1]->x==x&&player3->road[1]->y==y){player3->insert(x,y);player3->paint();player3->clear();}} - } - if (state_up==state) - { - if (ID_0==ID) - { - if (state_down==player0->state) player0->insert(x,y); - player0->paint(); - player0->up(); - player0->clear(); - player0->insert(x,y); - } - if (ID_1==ID) - { - if (state_down==player1->state) player1->insert(x,y); - player1->paint(); - player1->up(); - player1->clear(); - player1->insert(x,y); - } - if (ID_2==ID) - { - if (state_down==player2->state) player2->insert(x,y); - player2->paint(); - player2->up(); - player2->clear(); - player2->insert(x,y); - } - if (ID_3==ID) - { - if (state_down==player3->state) player3->insert(x,y); - player3->paint(); - player3->up(); - player3->clear(); - player3->insert(x,y); - } - } - if (state_down==state) - { - if (ID_0==ID) - { - player0->down(); - player0->insert(x,y); - } - if (ID_1==ID) - { - player1->down(); - player1->insert(x,y); - } - if (ID_2==ID) - { - player2->down(); - player2->insert(x,y); - } - if (ID_3==ID) - { - player3->down(); - player3->insert(x,y); - } - } - if (ID_0==ID) player0->change(x,y); - if (ID_1==ID) player1->change(x,y); - if (ID_2==ID) player2->change(x,y); - if (ID_3==ID) player3->change(x,y); - } - void make() - { - int i,j,k; - for (i=0;i<=3;i++) - for (j=1;j<=10;j++) - for (k=1;k<=10;k++) - { - if (1==minimap[i][j][k]) tot[i]++; - } - - for (j=1;j<=10;j++) - for (k=1;k<=10;k++) - { - int mini=10000000; - int minID=-1; - for (int s=0;s<=3;s++) - if (tot[s]score=player0->score+area[0]*area[0]*10; - player1->score=player1->score+area[1]*area[1]*10; - player2->score=player2->score+area[2]*area[2]*10; - player3->score=player3->score+area[3]*area[3]*10; - for (i=0;i<=3;i++) - if (0!=area[i]) now[i]++; - memset(minimap,0,sizeof(minimap)); - memset(area,0,sizeof(area)); - memset(tot,0,sizeof(tot)); - } -}; -int m,n,i,j,k; -int x[4],y[4],state[4],trappedleft[4],scoredecline[4]; -int now_id; -point bind[200]; -int timeleft[200]; -enclosure* game; -ofstream fout1(".\\output1.txt"); -ofstream fout2(".\\output2.txt"); -int mode=mode_start; -void generate_output(int diff_x,int diff_y,int other_action) -{ - cout<<"[ACTION] "; - if (diff_x==0&&diff_y==0) cout<<"s "; - else if (diff_x==0&&diff_y==1) cout<<"d "; - else if (diff_x==0&&diff_y==-1) cout<<"u "; - else if (diff_x==1&&diff_y==0) cout<<"r "; - else if (diff_x==-1&&diff_y==0) cout<<"l "; - cout<0) - { - //Upward Road - if (j==0||j==10||map[i][j]!=map[i][j+1]||map[i][j]==-1||map[i][j+1]==-1) edge_color[i][j][i-1][j]=-1; - else edge_color[i][j][i-1][j]=map[i][j]; - } - if (i<10) - { - //Downward Road - if (j==0||j==10||map[i+1][j]!=map[i+1][j+1]||map[i+1][j]==-1||map[i+1][j+1]==-1) edge_color[i][j][i+1][j]=-1; - else edge_color[i][j][i+1][j]=map[i+1][j+1]; - } - if (j>0) - { - //Leftward Road - if (i==0||i==10||map[i][j]!=map[i+1][j]||map[i][j]==-1||map[i+1][j]==-1) edge_color[i][j][i][j-1]=-1; - else edge_color[i][j][i][j-1]=map[i+1][j]; - } - if (j<10) - { - //Rightward Road - if (i==0||i==10||map[i][j+1]!=map[i+1][j+1]||map[i][j+1]==-1||map[i+1][j+1]==-1) edge_color[i][j][i][j+1]=-1; - else edge_color[i][j][i][j+1]=map[i][j+1]; - } - } - } -} -int enclosure_distance(point p1,point p2,int ID) -{ - //Todo: - return -1; -} -void brain() -{ - update_edge_status(); - int now_x,now_y; - switch (now_id) - { - case 0: - now_x=game->player0->position->x; - now_y=game->player0->position->y; - break; - case 1: - now_x=game->player1->position->x; - now_y=game->player1->position->y; - break; - case 2: - now_x=game->player2->position->x; - now_y=game->player2->position->y; - break; - case 3: - now_x=game->player3->position->x; - now_y=game->player3->position->y; - break; - default: - break; - } - - if (mode==mode_start) - { - mode=mode_right; - } - else if (mode==mode_right) - { - if (now_x==10&&now_y==10) mode=mode_up; - } - else if (mode==mode_up) - { - if (now_x==0&&now_y==10) mode=mode_left; - } - else if (mode==mode_left) - { - if (now_x==0&&now_y==0) mode=mode_down; - } - else if (mode==mode_down) - { - if (now_x==10&&now_y==0) mode=mode_halt; - } - - if (mode==mode_right&&now_y==0) - { - generate_output(0,1,1); - } - else if (mode==mode_right) - { - generate_output(0,1,0); - } - else if (mode==mode_up) - { - generate_output(-1,0,0); - } - else if (mode==mode_left) - { - generate_output(0,-1,0); - } - else if (mode==mode_down) - { - generate_output(1,0,0); - } - else if (mode==mode_halt) - { - generate_output(0,0,0); - } - fout1<<"---MAP---"<>label; - cin>>now_id; - cout<<"[POS] 10 0"<>label; - for (i=0;i<=3;i++) - { - cin>>x[i]>>y[i]>>state[i]>>trappedleft[i]>>scoredecline[i]; - } - if (!started) - { - started=true; - game=new enclosure(x[0],y[0],x[1],y[1],x[2],y[2],x[3],y[3]); - } - game->pass(ID_0,x[0],y[0],state[0]); - game->pass(ID_1,x[1],y[1],state[1]); - game->pass(ID_2,x[2],y[2],state[2]); - game->pass(ID_3,x[3],y[3],state[3]); - game->make(); - int tot; - cin>>tot; - for (i=1;i<=tot;i++) - { - cin>>bind[i].x>>bind[i].y>>timeleft[i]; - } - brain(); - } -} diff --git a/orz_0_5.cpp b/orz_0_5.cpp deleted file mode 100644 index 7959e54..0000000 --- a/orz_0_5.cpp +++ /dev/null @@ -1,451 +0,0 @@ -#include -#include -#include -#include -#include -#include -#define state_up 0 -#define state_down 1 -#define state_die -1 -#define ID_0 0 -#define ID_1 1 -#define ID_2 2 -#define ID_3 3 -#define mode_start 0 -#define mode_right 1 -#define mode_up 2 -#define mode_left 3 -#define mode_down 4 -#define mode_halt 5 -using namespace std; -int map[20][20]; -int minimap[4][20][20]; -int now[4]; -int tot[4]; -int area[4]; -int edge_color[20][20][20][20]; -class point -{ -public: - int x; - int y; -}; -class player -{ -public: - point* position; - int ID; - int score; - int state; - int trappedleft; - int num; - point* road[300]; - player(int ID,int x,int y) - { - position=new point; - position->x=x; - position->y=y; - this->ID=ID; - score=4-ID; - state=state_up; - trappedleft=0; - num=0; - } - void insert(int x,int y) - { - num++; - road[num]=new point; - road[num]->x=x; - road[num]->y=y; - } - void clear() - { - num=0; - } - void change(int x,int y) - { - position->x=x; - position->y=y; - } - void down() - { - this->state=state_down; - } - void up() - { - this->state=state_up; - } - void die() - { - this->state=state_die; - } - void paint() - { - int i,j,k; - for (i=1;i<=10;i++) - for (j=1;j<=10;j++) - { - bool left=false; - bool right=false; - bool top=false; - bool bottom=false; - for (k=2;k<=num;k++) - { - if (road[k-1]->x==road[k]->x&&road[k-1]->y==road[k]->y) continue; - if (road[k-1]->x==road[k]->x) - { - if (road[k-1]->yy) - { - if (j==road[k]->y&&i>road[k]->x) top=true; - if (j==road[k]->y&&i<=road[k]->x) bottom=true; - } - if (road[k-1]->y>road[k]->y) - { - if (j==road[k-1]->y&&i>road[k]->x) top=true; - if (j==road[k-1]->y&&i<=road[k]->x) bottom=true; - } - continue; - } - if (road[k-1]->y==road[k]->y) - { - if (road[k-1]->xx) - { - if (i==road[k]->x&&j>road[k]->y) left=true; - if (i==road[k]->x&&j<=road[k]->y) right=true; - } - if (road[k-1]->x>road[k]->x) - { - if (i==road[k-1]->x&&j>road[k]->y) left=true; - if (i==road[k-1]->x&&j<=road[k]->y) right=true; - } - } - } - if (top&&bottom&&left&&right) - { - if (-1==map[i][j]) - { - minimap[ID][i][j]=1; - } - } - } - num=0; - } -}; - -class enclosure -{ -public: - player* player0; - player* player1; - player* player2; - player* player3; - enclosure(int x0,int y0,int x1,int y1,int x2,int y2,int x3,int y3) - { - player0=new player(ID_0,x0,y0); - player1=new player(ID_1,x1,y1); - player2=new player(ID_2,x2,y2); - player3=new player(ID_3,x3,y3); - } - enclosure(){} - void pass(int ID,int x,int y,int state) - { - if (state_die==state) - { - if (ID_0==ID) {player0->die();if (player0->road[1]->x==x&&player0->road[1]->y==y){player0->insert(x,y);player0->paint();player0->clear();}} - if (ID_1==ID) {player1->die();if (player1->road[1]->x==x&&player1->road[1]->y==y){player1->insert(x,y);player1->paint();player1->clear();}} - if (ID_2==ID) {player2->die();if (player2->road[1]->x==x&&player2->road[1]->y==y){player2->insert(x,y);player2->paint();player2->clear();}} - if (ID_3==ID) {player3->die();if (player3->road[1]->x==x&&player3->road[1]->y==y){player3->insert(x,y);player3->paint();player3->clear();}} - } - if (state_up==state) - { - if (ID_0==ID) - { - if (state_down==player0->state) player0->insert(x,y); - player0->paint(); - player0->up(); - player0->clear(); - player0->insert(x,y); - } - if (ID_1==ID) - { - if (state_down==player1->state) player1->insert(x,y); - player1->paint(); - player1->up(); - player1->clear(); - player1->insert(x,y); - } - if (ID_2==ID) - { - if (state_down==player2->state) player2->insert(x,y); - player2->paint(); - player2->up(); - player2->clear(); - player2->insert(x,y); - } - if (ID_3==ID) - { - if (state_down==player3->state) player3->insert(x,y); - player3->paint(); - player3->up(); - player3->clear(); - player3->insert(x,y); - } - } - if (state_down==state) - { - if (ID_0==ID) - { - player0->down(); - player0->insert(x,y); - } - if (ID_1==ID) - { - player1->down(); - player1->insert(x,y); - } - if (ID_2==ID) - { - player2->down(); - player2->insert(x,y); - } - if (ID_3==ID) - { - player3->down(); - player3->insert(x,y); - } - } - if (ID_0==ID) player0->change(x,y); - if (ID_1==ID) player1->change(x,y); - if (ID_2==ID) player2->change(x,y); - if (ID_3==ID) player3->change(x,y); - } - void make() - { - int i,j,k; - for (i=0;i<=3;i++) - for (j=1;j<=10;j++) - for (k=1;k<=10;k++) - { - if (1==minimap[i][j][k]) tot[i]++; - } - - for (j=1;j<=10;j++) - for (k=1;k<=10;k++) - { - int mini=10000000; - int minID=-1; - for (int s=0;s<=3;s++) - if (tot[s]score=player0->score+area[0]*area[0]*10; - player1->score=player1->score+area[1]*area[1]*10; - player2->score=player2->score+area[2]*area[2]*10; - player3->score=player3->score+area[3]*area[3]*10; - for (i=0;i<=3;i++) - if (0!=area[i]) now[i]++; - memset(minimap,0,sizeof(minimap)); - memset(area,0,sizeof(area)); - memset(tot,0,sizeof(tot)); - } -}; -int m,n,i,j,k; -int x[4],y[4],state[4],trappedleft[4],scoredecline[4]; -int now_id; -point bind[200]; -int timeleft[200]; -enclosure* game; -ofstream fout1(".\\output1.txt"); -ofstream fout2(".\\output2.txt"); -ofstream fout3(".\\output3.txt"); -int mode=mode_start; -void generate_output(int diff_x,int diff_y,int other_action) -{ - cout<<"[ACTION] "; - if (diff_x==0&&diff_y==0) cout<<"s "; - else if (diff_x==0&&diff_y==1) cout<<"d "; - else if (diff_x==0&&diff_y==-1) cout<<"u "; - else if (diff_x==1&&diff_y==0) cout<<"r "; - else if (diff_x==-1&&diff_y==0) cout<<"l "; - cout<0) - { - //Upward Road - if (j==0||j==10||map[i][j]!=map[i][j+1]||map[i][j]==-1||map[i][j+1]==-1) edge_color[i][j][i-1][j]=-1; - else edge_color[i][j][i-1][j]=map[i][j]; - } - if (i<10) - { - //Downward Road - if (j==0||j==10||map[i+1][j]!=map[i+1][j+1]||map[i+1][j]==-1||map[i+1][j+1]==-1) edge_color[i][j][i+1][j]=-1; - else edge_color[i][j][i+1][j]=map[i+1][j+1]; - } - if (j>0) - { - //Leftward Road - if (i==0||i==10||map[i][j]!=map[i+1][j]||map[i][j]==-1||map[i+1][j]==-1) edge_color[i][j][i][j-1]=-1; - else edge_color[i][j][i][j-1]=map[i+1][j]; - } - if (j<10) - { - //Rightward Road - if (i==0||i==10||map[i][j+1]!=map[i+1][j+1]||map[i][j+1]==-1||map[i+1][j+1]==-1) edge_color[i][j][i][j+1]=-1; - else edge_color[i][j][i][j+1]=map[i][j+1]; - } - } - } -} -int enclosure_distance(point p1,point p2,int ID) -{ - //Todo: - return -1; -} -void brain() -{ - update_edge_status(); - int now_x,now_y; - switch (now_id) - { - case 0: - now_x=game->player0->position->x; - now_y=game->player0->position->y; - break; - case 1: - now_x=game->player1->position->x; - now_y=game->player1->position->y; - break; - case 2: - now_x=game->player2->position->x; - now_y=game->player2->position->y; - break; - case 3: - now_x=game->player3->position->x; - now_y=game->player3->position->y; - break; - default: - break; - } - - if (mode==mode_start) - { - mode=mode_right; - } - else if (mode==mode_right) - { - if (now_x==10&&now_y==10) mode=mode_up; - } - else if (mode==mode_up) - { - if (now_x==0&&now_y==10) mode=mode_left; - } - else if (mode==mode_left) - { - if (now_x==0&&now_y==0) mode=mode_down; - } - else if (mode==mode_down) - { - if (now_x==10&&now_y==0) mode=mode_halt; - } - - if (mode==mode_right&&now_y==0) - { - generate_output(0,1,1); - } - else if (mode==mode_right) - { - generate_output(0,1,0); - } - else if (mode==mode_up) - { - generate_output(-1,0,0); - } - else if (mode==mode_left) - { - generate_output(0,-1,0); - } - else if (mode==mode_down) - { - generate_output(1,0,0); - } - else if (mode==mode_halt) - { - generate_output(0,0,0); - } - fout1<<"---MAP---"<>label; - cin>>now_id; - cout<<"[POS] 10 0"<>label; - for (i=0;i<=3;i++) - { - cin>>x[i]>>y[i]>>state[i]>>trappedleft[i]>>scoredecline[i]; - } - if (!started) - { - started=true; - game=new enclosure(x[0],y[0],x[1],y[1],x[2],y[2],x[3],y[3]); - } - game->pass(ID_0,x[0],y[0],state[0]); - game->pass(ID_1,x[1],y[1],state[1]); - game->pass(ID_2,x[2],y[2],state[2]); - game->pass(ID_3,x[3],y[3],state[3]); - game->make(); - int total; - cin>>total; - for (i=1;i<=total;i++) - { - cin>>bind[i].x>>bind[i].y>>timeleft[i]; - } - brain(); - } -} diff --git a/orz_0_5_1.cpp b/orz_0_5_1.cpp deleted file mode 100644 index 4ea5497..0000000 --- a/orz_0_5_1.cpp +++ /dev/null @@ -1,531 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#define state_up 0 -#define state_down 1 -#define state_die -1 -#define ID_0 0 -#define ID_1 1 -#define ID_2 2 -#define ID_3 3 -#define mode_start 0 -#define mode_right 1 -#define mode_up 2 -#define mode_left 3 -#define mode_down 4 -#define mode_halt 5 -using namespace std; -int map[15][15]; -int minimap[4][15][15]; -int now[4],tot[4],area[4]; -int m,n,j,k; -int x[4],y[4],state[4],trappedleft[4],scoredecline[4]; -int now_id; -int edge_color[15][15][15][15]; -int timeleft[200]; -int mode=mode_start; -unsigned int relative_distance[4][15][15][15][15]; -class dot -{ - public: - int x; - int y; -}; -class player -{ - public: - dot* position; - int ID; - int score; - int state; - int trappedleft; - int num; - dot* road[300]; - player(int ID,int x,int y) - { - position=new dot; - position->x=x; - position->y=y; - this->ID=ID; - score=4-ID; - state=state_up; - trappedleft=0; - num=0; - } - void insert(int x,int y) - { - num++; - road[num]=new dot; - road[num]->x=x; - road[num]->y=y; - } - void clear() - { - num=0; - } - void change(int x,int y) - { - position->x=x; - position->y=y; - } - void down() - { - this->state=state_down; - } - void up() - { - this->state=state_up; - } - void die() - { - this->state=state_die; - } - void paint() - { - int i,j,k; - for(i=1;i<=10;i++) - for(j=1;j<=10;j++) - { - bool left=false; - bool right=false; - bool top=false; - bool bottom=false; - for(k=2;k<=num;k++) - { - if(road[k-1]->x==road[k]->x&&road[k-1]->y==road[k]->y) continue; - if(road[k-1]->x==road[k]->x) - { - if(road[k-1]->yy) - { - if(j==road[k]->y&&i>road[k]->x) top=true; - if(j==road[k]->y&&i<=road[k]->x) bottom=true; - } - if(road[k-1]->y>road[k]->y) - { - if(j==road[k-1]->y&&i>road[k]->x) top=true; - if(j==road[k-1]->y&&i<=road[k]->x) bottom=true; - } - continue; - } - if(road[k-1]->y==road[k]->y) - { - if(road[k-1]->xx) - { - if(i==road[k]->x&&j>road[k]->y) left=true; - if(i==road[k]->x&&j<=road[k]->y) right=true; - } - if(road[k-1]->x>road[k]->x) - { - if(i==road[k-1]->x&&j>road[k]->y) left=true; - if(i==road[k-1]->x&&j<=road[k]->y) right=true; - } - } - } - if(top&&bottom&&left&&right) - { - if(-1==map[i][j]) - { - minimap[ID][i][j]=1; - } - } - } - num=0; - } -}; - -class enclosure -{ - public: - player* player0; - player* player1; - player* player2; - player* player3; - enclosure(int x0,int y0,int x1,int y1,int x2,int y2,int x3,int y3) - { - player0=new player(ID_0,x0,y0); - player1=new player(ID_1,x1,y1); - player2=new player(ID_2,x2,y2); - player3=new player(ID_3,x3,y3); - } - enclosure(){} - void pass(int ID,int x,int y,int state) - { - if(state_die==state) - { - if(ID_0==ID) {player0->die();if(player0->road[1]->x==x&&player0->road[1]->y==y){player0->insert(x,y);player0->paint();player0->clear();}} - if(ID_1==ID) {player1->die();if(player1->road[1]->x==x&&player1->road[1]->y==y){player1->insert(x,y);player1->paint();player1->clear();}} - if(ID_2==ID) {player2->die();if(player2->road[1]->x==x&&player2->road[1]->y==y){player2->insert(x,y);player2->paint();player2->clear();}} - if(ID_3==ID) {player3->die();if(player3->road[1]->x==x&&player3->road[1]->y==y){player3->insert(x,y);player3->paint();player3->clear();}} - } - if(state_up==state) - { - if(ID_0==ID) - { - if(state_down==player0->state) player0->insert(x,y); - player0->paint(); - player0->up(); - player0->clear(); - player0->insert(x,y); - } - if(ID_1==ID) - { - if(state_down==player1->state) player1->insert(x,y); - player1->paint(); - player1->up(); - player1->clear(); - player1->insert(x,y); - } - if(ID_2==ID) - { - if(state_down==player2->state) player2->insert(x,y); - player2->paint(); - player2->up(); - player2->clear(); - player2->insert(x,y); - } - if(ID_3==ID) - { - if(state_down==player3->state) player3->insert(x,y); - player3->paint(); - player3->up(); - player3->clear(); - player3->insert(x,y); - } - } - if(state_down==state) - { - if(ID_0==ID) - { - player0->down(); - player0->insert(x,y); - } - if(ID_1==ID) - { - player1->down(); - player1->insert(x,y); - } - if(ID_2==ID) - { - player2->down(); - player2->insert(x,y); - } - if(ID_3==ID) - { - player3->down(); - player3->insert(x,y); - } - } - if(ID_0==ID) player0->change(x,y); - if(ID_1==ID) player1->change(x,y); - if(ID_2==ID) player2->change(x,y); - if(ID_3==ID) player3->change(x,y); - } - void make() - { - int i,j,k; - for(i=0;i<=3;i++) - for(j=1;j<=10;j++) - for(k=1;k<=10;k++) - { - if(1==minimap[i][j][k]) tot[i]++; - } - - for(j=1;j<=10;j++) - for(k=1;k<=10;k++) - { - int mini=10000000; - int minID=-1; - for(int s=0;s<=3;s++) - if(tot[s]score=player0->score+area[0]*area[0]*10; - player1->score=player1->score+area[1]*area[1]*10; - player2->score=player2->score+area[2]*area[2]*10; - player3->score=player3->score+area[3]*area[3]*10; - for(i=0;i<=3;i++) - if(0!=area[i]) now[i]++; - memset(minimap,0,sizeof(minimap)); - memset(area,0,sizeof(area)); - memset(tot,0,sizeof(tot)); - } -}; -dot bind[200]; -enclosure* game; -ofstream fout1(".\\output1.txt"); -ofstream fout2(".\\output2.txt"); -ofstream fout3(".\\output3.txt"); -ofstream fout4(".\\output4.txt"); -void generate_output(int diff_x,int diff_y,int other_action) -{ - cout<<"[ACTION] "; - if(diff_x==0&&diff_y==0) cout<<"s "; - else if(diff_x==0&&diff_y==1) cout<<"d "; - else if(diff_x==0&&diff_y==-1) cout<<"u "; - else if(diff_x==1&&diff_y==0) cout<<"r "; - else if(diff_x==-1&&diff_y==0) cout<<"l "; - cout<0) - { - //Upward Road - if(j==0||j==10||map[i][j]!=map[i][j+1]||map[i][j]==-1||map[i][j+1]==-1) edge_color[i][j][i-1][j]=-1; - else edge_color[i][j][i-1][j]=map[i][j]; - } - if(i<10) - { - //Downward Road - if(j==0||j==10||map[i+1][j]!=map[i+1][j+1]||map[i+1][j]==-1||map[i+1][j+1]==-1) edge_color[i][j][i+1][j]=-1; - else edge_color[i][j][i+1][j]=map[i+1][j+1]; - } - if(j>0) - { - //Leftward Road - if(i==0||i==10||map[i][j]!=map[i+1][j]||map[i][j]==-1||map[i+1][j]==-1) edge_color[i][j][i][j-1]=-1; - else edge_color[i][j][i][j-1]=map[i+1][j]; - } - if(j<10) - { - //Rightward Road - if(i==0||i==10||map[i][j+1]!=map[i+1][j+1]||map[i][j+1]==-1||map[i+1][j+1]==-1) edge_color[i][j][i][j+1]=-1; - else edge_color[i][j][i][j+1]=map[i][j+1]; - } - } - } -} -int update_distance(dot* start_point,int ID) -{ - //Todo: - //1. Get unpassable lines - //2. Do a bfs - //Note: - //1. An edge label 400 means specially defined unpassable lines - //2. This update process is only valid for a certain ID, i.e. the defined player - unsigned int tmp_distance[15][15]; - bool in_queue[15][15]; - memset(tmp_distance,0xff,sizeof(tmp_distance)); - memset(in_queue,0,sizeof(in_queue)); - queue* q=new queue; - q->push(start_point); - tmp_distance[start_point->x][start_point->y]=0; - while((!q->empty())) - { - dot* tmp=q->front(); - q->pop(); - in_queue[tmp->x][tmp->y]=false; - if((tmp->x>0)&&(edge_color[tmp->x][tmp->y][tmp->x-1][tmp->y]==-1)&&(tmp_distance[tmp->x-1][tmp->y]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x-1][tmp->y]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x-1; - tmp2->y=tmp->y; - if(!in_queue[tmp->x-1][tmp->y]) - { - q->push(tmp2); - in_queue[tmp->x-1][tmp->y]=true; - } - } - if((tmp->x<10)&&(edge_color[tmp->x][tmp->y][tmp->x+1][tmp->y]==-1)&&(tmp_distance[tmp->x+1][tmp->y]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x+1][tmp->y]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x+1; - tmp2->y=tmp->y; - if(!in_queue[tmp->x+1][tmp->y]) - { - q->push(tmp2); - in_queue[tmp->x+1][tmp->y]=true; - } - } - if((tmp->y>0)&&(edge_color[tmp->x][tmp->y][tmp->x][tmp->y-1]==-1)&&(tmp_distance[tmp->x][tmp->y-1]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x][tmp->y-1]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x; - tmp2->y=tmp->y-1; - if(!in_queue[tmp->x][tmp->y-1]) - { - q->push(tmp2); - in_queue[tmp->x][tmp->y-1]=true; - } - } - if((tmp->y<10)&&(edge_color[tmp->x][tmp->y][tmp->x][tmp->y+1]==-1)&&(tmp_distance[tmp->x][tmp->y+1]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x][tmp->y+1]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x; - tmp2->y=tmp->y+1; - if(!in_queue[tmp->x][tmp->y+1]) - { - q->push(tmp2); - in_queue[tmp->x][tmp->y+1]=true; - } - } - } - for(int i=0;i<=10;i++) for(int j=0;j<=10;j++) relative_distance[ID][start_point->x][start_point->y][i][j]=tmp_distance[i][j]; - return -1; -} -void brain() -{ - update_edge_status(); - update_distance(game->player0->position,0); - update_distance(game->player1->position,1); - update_distance(game->player2->position,2); - update_distance(game->player3->position,3); - int now_x,now_y; - switch(now_id) - { - case 0: - now_x=game->player0->position->x; - now_y=game->player0->position->y; - break; - case 1: - now_x=game->player1->position->x; - now_y=game->player1->position->y; - break; - case 2: - now_x=game->player2->position->x; - now_y=game->player2->position->y; - break; - case 3: - now_x=game->player3->position->x; - now_y=game->player3->position->y; - break; - default: - break; - } - //Finite State Machine - if(mode==mode_start) - { - mode=mode_right; - } - else if(mode==mode_right) - { - if(now_x==10&&now_y==10) mode=mode_up; - } - else if(mode==mode_up) - { - if(now_x==0&&now_y==10) mode=mode_left; - } - else if(mode==mode_left) - { - if(now_x==0&&now_y==0) mode=mode_down; - } - else if(mode==mode_down) - { - if(now_x==10&&now_y==0) mode=mode_halt; - } - //Output Area - if(mode==mode_right&&now_y==0) - { - generate_output(0,1,1); - } - else if(mode==mode_right) - { - generate_output(0,1,0); - } - else if(mode==mode_up) - { - generate_output(-1,0,0); - } - else if(mode==mode_left) - { - generate_output(0,-1,0); - } - else if(mode==mode_down) - { - generate_output(1,0,0); - } - else if(mode==mode_halt) - { - generate_output(0,0,0); - } - //Debug Output - fout1<<"---MAP---"<>label; - cin>>now_id; - cout<<"[POS] 10 0"<>label; - for(int i=0;i<=3;i++) - { - cin>>x[i]>>y[i]>>state[i]>>trappedleft[i]>>scoredecline[i]; - } - if(!started) - { - started=true; - game=new enclosure(x[0],y[0],x[1],y[1],x[2],y[2],x[3],y[3]); - } - game->pass(ID_0,x[0],y[0],state[0]); - game->pass(ID_1,x[1],y[1],state[1]); - game->pass(ID_2,x[2],y[2],state[2]); - game->pass(ID_3,x[3],y[3],state[3]); - game->make(); - int total; - cin>>total; - for(int i=1;i<=total;i++) - { - cin>>bind[i].x>>bind[i].y>>timeleft[i]; - } - brain(); - } -} diff --git a/orz_0_5_1.exe b/orz_0_5_1.exe deleted file mode 100644 index 5eafe497206a8d44855bf948f90aa94db477f5f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 154200 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 diff --git a/orz_0_6.cpp b/orz_0_6.cpp deleted file mode 100644 index 5d22656..0000000 --- a/orz_0_6.cpp +++ /dev/null @@ -1,535 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#define state_up 0 -#define state_down 1 -#define state_die -1 -#define ID_0 0 -#define ID_1 1 -#define ID_2 2 -#define ID_3 3 -#define mode_start 0 -#define mode_right 1 -#define mode_up 2 -#define mode_left 3 -#define mode_down 4 -#define mode_halt 5 -using namespace std; -int map[15][15]; -int minimap[4][15][15]; -int now[4],tot[4],area[4]; -int m,n,j,k; -int x[4],y[4],state[4],trappedleft[4],scoredecline[4]; -int now_id; -int edge_color[15][15][15][15]; -int timeleft[200]; -int mode=mode_start; -unsigned int relative_distance[4][15][15][15][15]; -class dot -{ - public: - int x; - int y; -}; -class player -{ - public: - dot* position; - int ID; - int score; - int state; - int trappedleft; - int num; - dot* road[300]; - player(int ID,int x,int y) - { - position=new dot; - position->x=x; - position->y=y; - this->ID=ID; - score=4-ID; - state=state_up; - trappedleft=0; - num=0; - } - void insert(int x,int y) - { - num++; - road[num]=new dot; - road[num]->x=x; - road[num]->y=y; - } - void clear() - { - num=0; - } - void change(int x,int y) - { - position->x=x; - position->y=y; - } - void down() - { - this->state=state_down; - } - void up() - { - this->state=state_up; - } - void die() - { - this->state=state_die; - } - void paint() - { - int i,j,k; - for(i=1;i<=10;i++) - for(j=1;j<=10;j++) - { - bool left=false; - bool right=false; - bool top=false; - bool bottom=false; - for(k=2;k<=num;k++) - { - if(road[k-1]->x==road[k]->x&&road[k-1]->y==road[k]->y) continue; - if(road[k-1]->x==road[k]->x) - { - if(road[k-1]->yy) - { - if(j==road[k]->y&&i>road[k]->x) top=true; - if(j==road[k]->y&&i<=road[k]->x) bottom=true; - } - if(road[k-1]->y>road[k]->y) - { - if(j==road[k-1]->y&&i>road[k]->x) top=true; - if(j==road[k-1]->y&&i<=road[k]->x) bottom=true; - } - continue; - } - if(road[k-1]->y==road[k]->y) - { - if(road[k-1]->xx) - { - if(i==road[k]->x&&j>road[k]->y) left=true; - if(i==road[k]->x&&j<=road[k]->y) right=true; - } - if(road[k-1]->x>road[k]->x) - { - if(i==road[k-1]->x&&j>road[k]->y) left=true; - if(i==road[k-1]->x&&j<=road[k]->y) right=true; - } - } - } - if(top&&bottom&&left&&right) - { - if(-1==map[i][j]) - { - minimap[ID][i][j]=1; - } - } - } - num=0; - } -}; - -class enclosure -{ - public: - player* player0; - player* player1; - player* player2; - player* player3; - enclosure(int x0,int y0,int x1,int y1,int x2,int y2,int x3,int y3) - { - player0=new player(ID_0,x0,y0); - player1=new player(ID_1,x1,y1); - player2=new player(ID_2,x2,y2); - player3=new player(ID_3,x3,y3); - } - enclosure(){} - void pass(int ID,int x,int y,int state) - { - if(state_die==state) - { - if(ID_0==ID) {player0->die();if(player0->road[1]->x==x&&player0->road[1]->y==y){player0->insert(x,y);player0->paint();player0->clear();}} - if(ID_1==ID) {player1->die();if(player1->road[1]->x==x&&player1->road[1]->y==y){player1->insert(x,y);player1->paint();player1->clear();}} - if(ID_2==ID) {player2->die();if(player2->road[1]->x==x&&player2->road[1]->y==y){player2->insert(x,y);player2->paint();player2->clear();}} - if(ID_3==ID) {player3->die();if(player3->road[1]->x==x&&player3->road[1]->y==y){player3->insert(x,y);player3->paint();player3->clear();}} - } - if(state_up==state) - { - if(ID_0==ID) - { - if(state_down==player0->state) player0->insert(x,y); - player0->paint(); - player0->up(); - player0->clear(); - player0->insert(x,y); - } - if(ID_1==ID) - { - if(state_down==player1->state) player1->insert(x,y); - player1->paint(); - player1->up(); - player1->clear(); - player1->insert(x,y); - } - if(ID_2==ID) - { - if(state_down==player2->state) player2->insert(x,y); - player2->paint(); - player2->up(); - player2->clear(); - player2->insert(x,y); - } - if(ID_3==ID) - { - if(state_down==player3->state) player3->insert(x,y); - player3->paint(); - player3->up(); - player3->clear(); - player3->insert(x,y); - } - } - if(state_down==state) - { - if(ID_0==ID) - { - player0->down(); - player0->insert(x,y); - } - if(ID_1==ID) - { - player1->down(); - player1->insert(x,y); - } - if(ID_2==ID) - { - player2->down(); - player2->insert(x,y); - } - if(ID_3==ID) - { - player3->down(); - player3->insert(x,y); - } - } - if(ID_0==ID) player0->change(x,y); - if(ID_1==ID) player1->change(x,y); - if(ID_2==ID) player2->change(x,y); - if(ID_3==ID) player3->change(x,y); - } - void make() - { - int i,j,k; - for(i=0;i<=3;i++) - for(j=1;j<=10;j++) - for(k=1;k<=10;k++) - { - if(1==minimap[i][j][k]) tot[i]++; - } - - for(j=1;j<=10;j++) - for(k=1;k<=10;k++) - { - int mini=10000000; - int minID=-1; - for(int s=0;s<=3;s++) - if(tot[s]score=player0->score+area[0]*area[0]*10; - player1->score=player1->score+area[1]*area[1]*10; - player2->score=player2->score+area[2]*area[2]*10; - player3->score=player3->score+area[3]*area[3]*10; - for(i=0;i<=3;i++) - if(0!=area[i]) now[i]++; - memset(minimap,0,sizeof(minimap)); - memset(area,0,sizeof(area)); - memset(tot,0,sizeof(tot)); - } -}; -dot bind[200]; -enclosure* game; -ofstream fout1(".\\output1.txt"); -ofstream fout2(".\\output2.txt"); -ofstream fout3(".\\output3.txt"); -ofstream fout4(".\\output4.txt"); -void generate_output(int diff_x,int diff_y,int other_action) -{ - cout<<"[ACTION] "; - if(diff_x==0&&diff_y==0) cout<<"s "; - else if(diff_x==0&&diff_y==1) cout<<"d "; - else if(diff_x==0&&diff_y==-1) cout<<"u "; - else if(diff_x==1&&diff_y==0) cout<<"r "; - else if(diff_x==-1&&diff_y==0) cout<<"l "; - cout<0) - { - //Upward Road - if(j==0||j==10||map[i][j]!=map[i][j+1]||map[i][j]==-1||map[i][j+1]==-1) edge_color[i][j][i-1][j]=-1; - else edge_color[i][j][i-1][j]=map[i][j]; - } - if(i<10) - { - //Downward Road - if(j==0||j==10||map[i+1][j]!=map[i+1][j+1]||map[i+1][j]==-1||map[i+1][j+1]==-1) edge_color[i][j][i+1][j]=-1; - else edge_color[i][j][i+1][j]=map[i+1][j+1]; - } - if(j>0) - { - //Leftward Road - if(i==0||i==10||map[i][j]!=map[i+1][j]||map[i][j]==-1||map[i+1][j]==-1) edge_color[i][j][i][j-1]=-1; - else edge_color[i][j][i][j-1]=map[i+1][j]; - } - if(j<10) - { - //Rightward Road - if(i==0||i==10||map[i][j+1]!=map[i+1][j+1]||map[i][j+1]==-1||map[i+1][j+1]==-1) edge_color[i][j][i][j+1]=-1; - else edge_color[i][j][i][j+1]=map[i][j+1]; - } - } - } -} -int update_distance(dot* start_point,int ID) -{ - //Todo: - //1. Get unpassable lines - //2. Do a bfs - //Note: - //1. An edge label 400 means specially defined unpassable lines - //2. This update process is only valid for a certain ID, i.e. the defined player - unsigned int tmp_distance[15][15]; - bool in_queue[15][15]; - memset(tmp_distance,0xff,sizeof(tmp_distance)); - memset(in_queue,0,sizeof(in_queue)); - queue* q=new queue; - q->push(start_point); - tmp_distance[start_point->x][start_point->y]=0; - while((!q->empty())) - { - dot* tmp=q->front(); - q->pop(); - in_queue[tmp->x][tmp->y]=false; - if((tmp->x>0)&&(edge_color[tmp->x][tmp->y][tmp->x-1][tmp->y]==-1)&&(tmp_distance[tmp->x-1][tmp->y]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x-1][tmp->y]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x-1; - tmp2->y=tmp->y; - if(!in_queue[tmp->x-1][tmp->y]) - { - q->push(tmp2); - in_queue[tmp->x-1][tmp->y]=true; - } - } - if((tmp->x<10)&&(edge_color[tmp->x][tmp->y][tmp->x+1][tmp->y]==-1)&&(tmp_distance[tmp->x+1][tmp->y]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x+1][tmp->y]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x+1; - tmp2->y=tmp->y; - if(!in_queue[tmp->x+1][tmp->y]) - { - q->push(tmp2); - in_queue[tmp->x+1][tmp->y]=true; - } - } - if((tmp->y>0)&&(edge_color[tmp->x][tmp->y][tmp->x][tmp->y-1]==-1)&&(tmp_distance[tmp->x][tmp->y-1]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x][tmp->y-1]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x; - tmp2->y=tmp->y-1; - if(!in_queue[tmp->x][tmp->y-1]) - { - q->push(tmp2); - in_queue[tmp->x][tmp->y-1]=true; - } - } - if((tmp->y<10)&&(edge_color[tmp->x][tmp->y][tmp->x][tmp->y+1]==-1)&&(tmp_distance[tmp->x][tmp->y+1]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x][tmp->y+1]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x; - tmp2->y=tmp->y+1; - if(!in_queue[tmp->x][tmp->y+1]) - { - q->push(tmp2); - in_queue[tmp->x][tmp->y+1]=true; - } - } - } - for(int i=0;i<=10;i++) for(int j=0;j<=10;j++) relative_distance[ID][start_point->x][start_point->y][i][j]=tmp_distance[i][j]; - return -1; -} -void brain() -{ - update_edge_status(); - update_distance(game->player0->position,0); - update_distance(game->player1->position,1); - update_distance(game->player2->position,2); - update_distance(game->player3->position,3); - int now_x,now_y; - switch(now_id) - { - case 0: - now_x=game->player0->position->x; - now_y=game->player0->position->y; - break; - case 1: - now_x=game->player1->position->x; - now_y=game->player1->position->y; - break; - case 2: - now_x=game->player2->position->x; - now_y=game->player2->position->y; - break; - case 3: - now_x=game->player3->position->x; - now_y=game->player3->position->y; - break; - default: - break; - } - //Finite State Machine - if(mode==mode_start) - { - mode=mode_right; - } - else if(mode==mode_right) - { - if(now_x==10&&now_y==10) mode=mode_up; - } - else if(mode==mode_up) - { - if(now_x==0&&now_y==10) mode=mode_left; - } - else if(mode==mode_left) - { - if(now_x==0&&now_y==0) mode=mode_down; - } - else if(mode==mode_down) - { - if(now_x==10&&now_y==0) mode=mode_halt; - } - //Output Area - if(mode==mode_right&&now_y==0) - { - generate_output(0,1,1); - } - else if(mode==mode_right) - { - generate_output(0,1,0); - } - else if(mode==mode_up) - { - generate_output(-1,0,0); - } - else if(mode==mode_left) - { - generate_output(0,-1,0); - } - else if(mode==mode_down) - { - generate_output(1,0,0); - } - else if(mode==mode_halt) - { - generate_output(0,0,0); - } - //Debug Output - fout1<<"---MAP---"<>label; - cin>>now_id; - cout<<"[POS] 10 0"<>label; - for(int i=0;i<=3;i++) - { - cin>>x[i]>>y[i]>>state[i]>>trappedleft[i]>>scoredecline[i]; - } - if(!started) - { - started=true; - game=new enclosure(x[0],y[0],x[1],y[1],x[2],y[2],x[3],y[3]); - } - game->pass(ID_0,x[0],y[0],state[0]); - game->pass(ID_1,x[1],y[1],state[1]); - game->pass(ID_2,x[2],y[2],state[2]); - game->pass(ID_3,x[3],y[3],state[3]); - game->make(); - int total; - cin>>total; - for(int i=1;i<=total;i++) - { - cin>>bind[i].x>>bind[i].y>>timeleft[i]; - } - brain(); - } -} diff --git a/orz_0_6_1.cpp b/orz_0_6_1.cpp deleted file mode 100644 index 5d22656..0000000 --- a/orz_0_6_1.cpp +++ /dev/null @@ -1,535 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#define state_up 0 -#define state_down 1 -#define state_die -1 -#define ID_0 0 -#define ID_1 1 -#define ID_2 2 -#define ID_3 3 -#define mode_start 0 -#define mode_right 1 -#define mode_up 2 -#define mode_left 3 -#define mode_down 4 -#define mode_halt 5 -using namespace std; -int map[15][15]; -int minimap[4][15][15]; -int now[4],tot[4],area[4]; -int m,n,j,k; -int x[4],y[4],state[4],trappedleft[4],scoredecline[4]; -int now_id; -int edge_color[15][15][15][15]; -int timeleft[200]; -int mode=mode_start; -unsigned int relative_distance[4][15][15][15][15]; -class dot -{ - public: - int x; - int y; -}; -class player -{ - public: - dot* position; - int ID; - int score; - int state; - int trappedleft; - int num; - dot* road[300]; - player(int ID,int x,int y) - { - position=new dot; - position->x=x; - position->y=y; - this->ID=ID; - score=4-ID; - state=state_up; - trappedleft=0; - num=0; - } - void insert(int x,int y) - { - num++; - road[num]=new dot; - road[num]->x=x; - road[num]->y=y; - } - void clear() - { - num=0; - } - void change(int x,int y) - { - position->x=x; - position->y=y; - } - void down() - { - this->state=state_down; - } - void up() - { - this->state=state_up; - } - void die() - { - this->state=state_die; - } - void paint() - { - int i,j,k; - for(i=1;i<=10;i++) - for(j=1;j<=10;j++) - { - bool left=false; - bool right=false; - bool top=false; - bool bottom=false; - for(k=2;k<=num;k++) - { - if(road[k-1]->x==road[k]->x&&road[k-1]->y==road[k]->y) continue; - if(road[k-1]->x==road[k]->x) - { - if(road[k-1]->yy) - { - if(j==road[k]->y&&i>road[k]->x) top=true; - if(j==road[k]->y&&i<=road[k]->x) bottom=true; - } - if(road[k-1]->y>road[k]->y) - { - if(j==road[k-1]->y&&i>road[k]->x) top=true; - if(j==road[k-1]->y&&i<=road[k]->x) bottom=true; - } - continue; - } - if(road[k-1]->y==road[k]->y) - { - if(road[k-1]->xx) - { - if(i==road[k]->x&&j>road[k]->y) left=true; - if(i==road[k]->x&&j<=road[k]->y) right=true; - } - if(road[k-1]->x>road[k]->x) - { - if(i==road[k-1]->x&&j>road[k]->y) left=true; - if(i==road[k-1]->x&&j<=road[k]->y) right=true; - } - } - } - if(top&&bottom&&left&&right) - { - if(-1==map[i][j]) - { - minimap[ID][i][j]=1; - } - } - } - num=0; - } -}; - -class enclosure -{ - public: - player* player0; - player* player1; - player* player2; - player* player3; - enclosure(int x0,int y0,int x1,int y1,int x2,int y2,int x3,int y3) - { - player0=new player(ID_0,x0,y0); - player1=new player(ID_1,x1,y1); - player2=new player(ID_2,x2,y2); - player3=new player(ID_3,x3,y3); - } - enclosure(){} - void pass(int ID,int x,int y,int state) - { - if(state_die==state) - { - if(ID_0==ID) {player0->die();if(player0->road[1]->x==x&&player0->road[1]->y==y){player0->insert(x,y);player0->paint();player0->clear();}} - if(ID_1==ID) {player1->die();if(player1->road[1]->x==x&&player1->road[1]->y==y){player1->insert(x,y);player1->paint();player1->clear();}} - if(ID_2==ID) {player2->die();if(player2->road[1]->x==x&&player2->road[1]->y==y){player2->insert(x,y);player2->paint();player2->clear();}} - if(ID_3==ID) {player3->die();if(player3->road[1]->x==x&&player3->road[1]->y==y){player3->insert(x,y);player3->paint();player3->clear();}} - } - if(state_up==state) - { - if(ID_0==ID) - { - if(state_down==player0->state) player0->insert(x,y); - player0->paint(); - player0->up(); - player0->clear(); - player0->insert(x,y); - } - if(ID_1==ID) - { - if(state_down==player1->state) player1->insert(x,y); - player1->paint(); - player1->up(); - player1->clear(); - player1->insert(x,y); - } - if(ID_2==ID) - { - if(state_down==player2->state) player2->insert(x,y); - player2->paint(); - player2->up(); - player2->clear(); - player2->insert(x,y); - } - if(ID_3==ID) - { - if(state_down==player3->state) player3->insert(x,y); - player3->paint(); - player3->up(); - player3->clear(); - player3->insert(x,y); - } - } - if(state_down==state) - { - if(ID_0==ID) - { - player0->down(); - player0->insert(x,y); - } - if(ID_1==ID) - { - player1->down(); - player1->insert(x,y); - } - if(ID_2==ID) - { - player2->down(); - player2->insert(x,y); - } - if(ID_3==ID) - { - player3->down(); - player3->insert(x,y); - } - } - if(ID_0==ID) player0->change(x,y); - if(ID_1==ID) player1->change(x,y); - if(ID_2==ID) player2->change(x,y); - if(ID_3==ID) player3->change(x,y); - } - void make() - { - int i,j,k; - for(i=0;i<=3;i++) - for(j=1;j<=10;j++) - for(k=1;k<=10;k++) - { - if(1==minimap[i][j][k]) tot[i]++; - } - - for(j=1;j<=10;j++) - for(k=1;k<=10;k++) - { - int mini=10000000; - int minID=-1; - for(int s=0;s<=3;s++) - if(tot[s]score=player0->score+area[0]*area[0]*10; - player1->score=player1->score+area[1]*area[1]*10; - player2->score=player2->score+area[2]*area[2]*10; - player3->score=player3->score+area[3]*area[3]*10; - for(i=0;i<=3;i++) - if(0!=area[i]) now[i]++; - memset(minimap,0,sizeof(minimap)); - memset(area,0,sizeof(area)); - memset(tot,0,sizeof(tot)); - } -}; -dot bind[200]; -enclosure* game; -ofstream fout1(".\\output1.txt"); -ofstream fout2(".\\output2.txt"); -ofstream fout3(".\\output3.txt"); -ofstream fout4(".\\output4.txt"); -void generate_output(int diff_x,int diff_y,int other_action) -{ - cout<<"[ACTION] "; - if(diff_x==0&&diff_y==0) cout<<"s "; - else if(diff_x==0&&diff_y==1) cout<<"d "; - else if(diff_x==0&&diff_y==-1) cout<<"u "; - else if(diff_x==1&&diff_y==0) cout<<"r "; - else if(diff_x==-1&&diff_y==0) cout<<"l "; - cout<0) - { - //Upward Road - if(j==0||j==10||map[i][j]!=map[i][j+1]||map[i][j]==-1||map[i][j+1]==-1) edge_color[i][j][i-1][j]=-1; - else edge_color[i][j][i-1][j]=map[i][j]; - } - if(i<10) - { - //Downward Road - if(j==0||j==10||map[i+1][j]!=map[i+1][j+1]||map[i+1][j]==-1||map[i+1][j+1]==-1) edge_color[i][j][i+1][j]=-1; - else edge_color[i][j][i+1][j]=map[i+1][j+1]; - } - if(j>0) - { - //Leftward Road - if(i==0||i==10||map[i][j]!=map[i+1][j]||map[i][j]==-1||map[i+1][j]==-1) edge_color[i][j][i][j-1]=-1; - else edge_color[i][j][i][j-1]=map[i+1][j]; - } - if(j<10) - { - //Rightward Road - if(i==0||i==10||map[i][j+1]!=map[i+1][j+1]||map[i][j+1]==-1||map[i+1][j+1]==-1) edge_color[i][j][i][j+1]=-1; - else edge_color[i][j][i][j+1]=map[i][j+1]; - } - } - } -} -int update_distance(dot* start_point,int ID) -{ - //Todo: - //1. Get unpassable lines - //2. Do a bfs - //Note: - //1. An edge label 400 means specially defined unpassable lines - //2. This update process is only valid for a certain ID, i.e. the defined player - unsigned int tmp_distance[15][15]; - bool in_queue[15][15]; - memset(tmp_distance,0xff,sizeof(tmp_distance)); - memset(in_queue,0,sizeof(in_queue)); - queue* q=new queue; - q->push(start_point); - tmp_distance[start_point->x][start_point->y]=0; - while((!q->empty())) - { - dot* tmp=q->front(); - q->pop(); - in_queue[tmp->x][tmp->y]=false; - if((tmp->x>0)&&(edge_color[tmp->x][tmp->y][tmp->x-1][tmp->y]==-1)&&(tmp_distance[tmp->x-1][tmp->y]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x-1][tmp->y]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x-1; - tmp2->y=tmp->y; - if(!in_queue[tmp->x-1][tmp->y]) - { - q->push(tmp2); - in_queue[tmp->x-1][tmp->y]=true; - } - } - if((tmp->x<10)&&(edge_color[tmp->x][tmp->y][tmp->x+1][tmp->y]==-1)&&(tmp_distance[tmp->x+1][tmp->y]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x+1][tmp->y]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x+1; - tmp2->y=tmp->y; - if(!in_queue[tmp->x+1][tmp->y]) - { - q->push(tmp2); - in_queue[tmp->x+1][tmp->y]=true; - } - } - if((tmp->y>0)&&(edge_color[tmp->x][tmp->y][tmp->x][tmp->y-1]==-1)&&(tmp_distance[tmp->x][tmp->y-1]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x][tmp->y-1]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x; - tmp2->y=tmp->y-1; - if(!in_queue[tmp->x][tmp->y-1]) - { - q->push(tmp2); - in_queue[tmp->x][tmp->y-1]=true; - } - } - if((tmp->y<10)&&(edge_color[tmp->x][tmp->y][tmp->x][tmp->y+1]==-1)&&(tmp_distance[tmp->x][tmp->y+1]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x][tmp->y+1]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x; - tmp2->y=tmp->y+1; - if(!in_queue[tmp->x][tmp->y+1]) - { - q->push(tmp2); - in_queue[tmp->x][tmp->y+1]=true; - } - } - } - for(int i=0;i<=10;i++) for(int j=0;j<=10;j++) relative_distance[ID][start_point->x][start_point->y][i][j]=tmp_distance[i][j]; - return -1; -} -void brain() -{ - update_edge_status(); - update_distance(game->player0->position,0); - update_distance(game->player1->position,1); - update_distance(game->player2->position,2); - update_distance(game->player3->position,3); - int now_x,now_y; - switch(now_id) - { - case 0: - now_x=game->player0->position->x; - now_y=game->player0->position->y; - break; - case 1: - now_x=game->player1->position->x; - now_y=game->player1->position->y; - break; - case 2: - now_x=game->player2->position->x; - now_y=game->player2->position->y; - break; - case 3: - now_x=game->player3->position->x; - now_y=game->player3->position->y; - break; - default: - break; - } - //Finite State Machine - if(mode==mode_start) - { - mode=mode_right; - } - else if(mode==mode_right) - { - if(now_x==10&&now_y==10) mode=mode_up; - } - else if(mode==mode_up) - { - if(now_x==0&&now_y==10) mode=mode_left; - } - else if(mode==mode_left) - { - if(now_x==0&&now_y==0) mode=mode_down; - } - else if(mode==mode_down) - { - if(now_x==10&&now_y==0) mode=mode_halt; - } - //Output Area - if(mode==mode_right&&now_y==0) - { - generate_output(0,1,1); - } - else if(mode==mode_right) - { - generate_output(0,1,0); - } - else if(mode==mode_up) - { - generate_output(-1,0,0); - } - else if(mode==mode_left) - { - generate_output(0,-1,0); - } - else if(mode==mode_down) - { - generate_output(1,0,0); - } - else if(mode==mode_halt) - { - generate_output(0,0,0); - } - //Debug Output - fout1<<"---MAP---"<>label; - cin>>now_id; - cout<<"[POS] 10 0"<>label; - for(int i=0;i<=3;i++) - { - cin>>x[i]>>y[i]>>state[i]>>trappedleft[i]>>scoredecline[i]; - } - if(!started) - { - started=true; - game=new enclosure(x[0],y[0],x[1],y[1],x[2],y[2],x[3],y[3]); - } - game->pass(ID_0,x[0],y[0],state[0]); - game->pass(ID_1,x[1],y[1],state[1]); - game->pass(ID_2,x[2],y[2],state[2]); - game->pass(ID_3,x[3],y[3],state[3]); - game->make(); - int total; - cin>>total; - for(int i=1;i<=total;i++) - { - cin>>bind[i].x>>bind[i].y>>timeleft[i]; - } - brain(); - } -} diff --git a/orz_0_6_2.cpp b/orz_0_6_2.cpp deleted file mode 100644 index 615402c..0000000 --- a/orz_0_6_2.cpp +++ /dev/null @@ -1,621 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#define state_up 0 -#define state_down 1 -#define state_die -1 -#define ID_0 0 -#define ID_1 1 -#define ID_2 2 -#define ID_3 3 -#define mode_start 0 -#define mode_right 1 -#define mode_up 2 -#define mode_left 3 -#define mode_down 4 -#define mode_halt 5 -using namespace std; -int map[15][15]; -int minimap[4][15][15]; -int now[4],tot[4],area[4]; -int m,n,j,k; -int x[4],y[4],state[4],trappedleft[4],scoredecline[4]; -int now_id; -int edge_color[15][15][15][15]; -int timeleft[200]; -int mode=mode_start; -unsigned int relative_distance[4][15][15][15][15]; -class dot -{ -public: - int x; - int y; -}; -class player -{ -public: - dot* position; - int ID; - int score; - int state; - int trappedleft; - int num; - dot* road[300]; - player(int ID,int x,int y) - { - position=new dot; - position->x=x; - position->y=y; - this->ID=ID; - score=4-ID; - state=state_up; - trappedleft=0; - num=0; - } - void insert(int x,int y) - { - num++; - road[num]=new dot; - road[num]->x=x; - road[num]->y=y; - } - void cut() - { - num--; - } - void clear() - { - num=0; - } - void change(int x,int y) - { - position->x=x; - position->y=y; - } - void down() - { - this->state=state_down; - } - void up() - { - this->state=state_up; - } - void die() - { - this->state=state_die; - } - void paint() - { - int i,j,k; - for (i=1;i<=10;i++) - for (j=1;j<=10;j++) - { - bool left=false; - bool right=false; - bool top=false; - bool bottom=false; - for (k=2;k<=num;k++) - { - if (road[k-1]->x==road[k]->x&&road[k-1]->y==road[k]->y) continue; - if (road[k-1]->x==road[k]->x) - { - if (road[k-1]->yy) - { - if (j==road[k]->y&&i>road[k]->x) top=true; - if (j==road[k]->y&&i<=road[k]->x) bottom=true; - } - if (road[k-1]->y>road[k]->y) - { - if (j==road[k-1]->y&&i>road[k]->x) top=true; - if (j==road[k-1]->y&&i<=road[k]->x) bottom=true; - } - continue; - } - if (road[k-1]->y==road[k]->y) - { - if (road[k-1]->xx) - { - if (i==road[k]->x&&j>road[k]->y) left=true; - if (i==road[k]->x&&j<=road[k]->y) right=true; - } - if (road[k-1]->x>road[k]->x) - { - if (i==road[k-1]->x&&j>road[k]->y) left=true; - if (i==road[k-1]->x&&j<=road[k]->y) right=true; - } - } - } - if (top&&bottom&&left&&right) - { - if (-1==map[i][j]) - { - minimap[ID][i][j]=1; - } - } - } - num=0; - } -}; - -class enclosure -{ -public: - player* player0; - player* player1; - player* player2; - player* player3; - enclosure(int x0,int y0,int x1,int y1,int x2,int y2,int x3,int y3) - { - player0=new player(ID_0,x0,y0); - player1=new player(ID_1,x1,y1); - player2=new player(ID_2,x2,y2); - player3=new player(ID_3,x3,y3); - } - enclosure(){} - void pass(int ID,int x,int y,int state) - { - if (state_die==state) - { - if (ID_0==ID) - { - player0->die(); - if (player0->road[1]->x==x&&player0->road[1]->y==y) - { - player0->insert(x,y); - player0->paint(); - player0->clear(); - } - } - if (ID_1==ID) - { - player1->die(); - if (player1->road[1]->x==x&&player1->road[1]->y==y) - { - player1->insert(x,y); - player1->paint(); - player1->clear(); - } - } - if (ID_2==ID) - { - player2->die(); - if (player2->road[1]->x==x&&player2->road[1]->y==y) - { - player2->insert(x,y); - player2->paint(); - player2->clear(); - } - } - if (ID_3==ID) - { - player3->die(); - if (player3->road[1]->x==x&&player3->road[1]->y==y) - { - player3->insert(x,y); - player3->paint(); - player3->clear(); - } - } - } - if (state_up==state) - { - if (ID_0==ID) - { - if (state_down==player0->state) player0->insert(x,y); - player0->paint(); - player0->up(); - player0->clear(); - player0->insert(x,y); - } - if (ID_1==ID) - { - if (state_down==player1->state) player1->insert(x,y); - player1->paint(); - player1->up(); - player1->clear(); - player1->insert(x,y); - } - if (ID_2==ID) - { - if (state_down==player2->state) player2->insert(x,y); - player2->paint(); - player2->up(); - player2->clear(); - player2->insert(x,y); - } - if (ID_3==ID) - { - if (state_down==player3->state) player3->insert(x,y); - player3->paint(); - player3->up(); - player3->clear(); - player3->insert(x,y); - } - } - if (state_down==state) - { - if (ID_0==ID) - { - player0->down(); - player0->insert(x,y); - } - if (ID_1==ID) - { - player1->down(); - player1->insert(x,y); - } - if (ID_2==ID) - { - player2->down(); - player2->insert(x,y); - } - if (ID_3==ID) - { - player3->down(); - player3->insert(x,y); - } - } - if (ID_0==ID) player0->change(x,y); - if (ID_1==ID) player1->change(x,y); - if (ID_2==ID) player2->change(x,y); - if (ID_3==ID) player3->change(x,y); - } - void make() - { - int i,j,k; - for (i=0;i<=3;i++) - for (j=1;j<=10;j++) - for (k=1;k<=10;k++) - { - if (1==minimap[i][j][k]) tot[i]++; - } - - for (j=1;j<=10;j++) - for (k=1;k<=10;k++) - { - int mini=10000000; - int minID=-1; - for (int s=0;s<=3;s++) - if (tot[s]score=player0->score+area[0]*area[0]*10; - player1->score=player1->score+area[1]*area[1]*10; - player2->score=player2->score+area[2]*area[2]*10; - player3->score=player3->score+area[3]*area[3]*10; - for (i=0;i<=3;i++) - if (0!=area[i]) now[i]++; - memset(minimap,0,sizeof(minimap)); - memset(area,0,sizeof(area)); - memset(tot,0,sizeof(tot)); - } -}; -dot bind[200]; -enclosure* game; -ofstream fout1(".\\output1.txt"); -ofstream fout2(".\\output2.txt"); -ofstream fout3(".\\output3.txt"); -ofstream fout4(".\\output4.txt"); -void generate_output(int diff_x,int diff_y,int other_action) -{ - cout<<"[ACTION] "; - if (diff_x==0&&diff_y==0) cout<<"s "; - else if (diff_x==0&&diff_y==1) cout<<"d "; - else if (diff_x==0&&diff_y==-1) cout<<"u "; - else if (diff_x==1&&diff_y==0) cout<<"r "; - else if (diff_x==-1&&diff_y==0) cout<<"l "; - cout<0) - { - //Upward Road - if (j==0||j==10||map[i][j]!=map[i][j+1]||map[i][j]==-1||map[i][j+1]==-1) edge_color[i][j][i-1][j]=-1; - else edge_color[i][j][i-1][j]=map[i][j]; - } - if (i<10) - { - //Downward Road - if (j==0||j==10||map[i+1][j]!=map[i+1][j+1]||map[i+1][j]==-1||map[i+1][j+1]==-1) edge_color[i][j][i+1][j]=-1; - else edge_color[i][j][i+1][j]=map[i+1][j+1]; - } - if (j>0) - { - //Leftward Road - if (i==0||i==10||map[i][j]!=map[i+1][j]||map[i][j]==-1||map[i+1][j]==-1) edge_color[i][j][i][j-1]=-1; - else edge_color[i][j][i][j-1]=map[i+1][j]; - } - if (j<10) - { - //Rightward Road - if (i==0||i==10||map[i][j+1]!=map[i+1][j+1]||map[i][j+1]==-1||map[i+1][j+1]==-1) edge_color[i][j][i][j+1]=-1; - else edge_color[i][j][i][j+1]=map[i][j+1]; - } - } - } -} -int update_distance(dot* start_point,int ID) -{ - //Todo: - //1. Get unpassable lines - //2. Do a bfs - //Note: - //1. An edge label 400 means specially defined unpassable lines - //2. This update process is only valid for a certain ID, i.e. the defined player - unsigned int tmp_distance[15][15]; - bool in_queue[15][15]; - memset(tmp_distance,0xff,sizeof(tmp_distance)); - memset(in_queue,0,sizeof(in_queue)); - queue* q=new queue; - q->push(start_point); - tmp_distance[start_point->x][start_point->y]=0; - while ((!q->empty())) - { - dot* tmp=q->front(); - q->pop(); - in_queue[tmp->x][tmp->y]=false; - if ((tmp->x>0)&&(edge_color[tmp->x][tmp->y][tmp->x-1][tmp->y]==-1)&&(tmp_distance[tmp->x-1][tmp->y]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x-1][tmp->y]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x-1; - tmp2->y=tmp->y; - if (!in_queue[tmp->x-1][tmp->y]) - { - q->push(tmp2); - in_queue[tmp->x-1][tmp->y]=true; - } - } - if ((tmp->x<10)&&(edge_color[tmp->x][tmp->y][tmp->x+1][tmp->y]==-1)&&(tmp_distance[tmp->x+1][tmp->y]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x+1][tmp->y]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x+1; - tmp2->y=tmp->y; - if (!in_queue[tmp->x+1][tmp->y]) - { - q->push(tmp2); - in_queue[tmp->x+1][tmp->y]=true; - } - } - if ((tmp->y>0)&&(edge_color[tmp->x][tmp->y][tmp->x][tmp->y-1]==-1)&&(tmp_distance[tmp->x][tmp->y-1]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x][tmp->y-1]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x; - tmp2->y=tmp->y-1; - if (!in_queue[tmp->x][tmp->y-1]) - { - q->push(tmp2); - in_queue[tmp->x][tmp->y-1]=true; - } - } - if ((tmp->y<10)&&(edge_color[tmp->x][tmp->y][tmp->x][tmp->y+1]==-1)&&(tmp_distance[tmp->x][tmp->y+1]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x][tmp->y+1]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x; - tmp2->y=tmp->y+1; - if (!in_queue[tmp->x][tmp->y+1]) - { - q->push(tmp2); - in_queue[tmp->x][tmp->y+1]=true; - } - } - } - for (int i=0;i<=10;i++) for (int j=0;j<=10;j++) relative_distance[ID][start_point->x][start_point->y][i][j]=tmp_distance[i][j]; - return -1; -} -int calculate_area(dot** x,int dot_num) -{ - int i,j,k; - int ans=0; - for (i=1;i<=10;i++) - for (j=1;j<=10;j++) - { - bool left=false; - bool right=false; - bool top=false; - bool bottom=false; - for (k=2;k<=dot_num;k++) - { - if (x[k-1]->x==x[k]->x&&x[k-1]->y==x[k]->y) continue; - if (x[k-1]->x==x[k]->x) - { - if (x[k-1]->yy) - { - if (j==x[k]->y&&i>x[k]->x) top=true; - if (j==x[k]->y&&i<=x[k]->x) bottom=true; - } - if (x[k-1]->y>x[k]->y) - { - if (j==x[k-1]->y&&i>x[k]->x) top=true; - if (j==x[k-1]->y&&i<=x[k]->x) bottom=true; - } - continue; - } - if (x[k-1]->y==x[k]->y) - { - if (x[k-1]->xx) - { - if (i==x[k]->x&&j>x[k]->y) left=true; - if (i==x[k]->x&&j<=x[k]->y) right=true; - } - if (x[k-1]->x>x[k]->x) - { - if (i==x[k-1]->x&&j>x[k]->y) left=true; - if (i==x[k-1]->x&&j<=x[k]->y) right=true; - } - } - } - if (left&&right&&top&&bottom) ans++; - } - return ans; -} -void brain() -{ - update_edge_status(); - update_distance(game->player0->position,0); - update_distance(game->player1->position,1); - update_distance(game->player2->position,2); - update_distance(game->player3->position,3); - int now_x,now_y; - switch (now_id) - { - case 0: - now_x=game->player0->position->x; - now_y=game->player0->position->y; - break; - case 1: - now_x=game->player1->position->x; - now_y=game->player1->position->y; - break; - case 2: - now_x=game->player2->position->x; - now_y=game->player2->position->y; - break; - case 3: - now_x=game->player3->position->x; - now_y=game->player3->position->y; - break; - default: - break; - } - //Finite State Machine - if (mode==mode_start) - { - mode=mode_right; - } - else if (mode==mode_right) - { - if (now_x==10&&now_y==10) mode=mode_up; - } - else if (mode==mode_up) - { - if (now_x==0&&now_y==10) mode=mode_left; - } - else if (mode==mode_left) - { - if (now_x==0&&now_y==0) mode=mode_down; - } - else if (mode==mode_down) - { - if (now_x==10&&now_y==0) mode=mode_halt; - } - //Output Area - if (mode==mode_right&&now_y==0) - { - generate_output(0,1,1); - } - else if (mode==mode_right) - { - generate_output(0,1,0); - } - else if (mode==mode_up) - { - generate_output(-1,0,0); - } - else if (mode==mode_left) - { - generate_output(0,-1,0); - } - else if (mode==mode_down) - { - generate_output(1,0,0); - } - else if (mode==mode_halt) - { - generate_output(0,0,0); - } - //Debug Output - fout1<<"---MAP---"<>label; - cin>>now_id; - cout<<"[POS] 10 0"<>label; - for (int i=0;i<=3;i++) - { - cin>>x[i]>>y[i]>>state[i]>>trappedleft[i]>>scoredecline[i]; - } - if (!started) - { - started=true; - game=new enclosure(x[0],y[0],x[1],y[1],x[2],y[2],x[3],y[3]); - } - game->pass(ID_0,x[0],y[0],state[0]); - game->pass(ID_1,x[1],y[1],state[1]); - game->pass(ID_2,x[2],y[2],state[2]); - game->pass(ID_3,x[3],y[3],state[3]); - game->make(); - int total; - cin>>total; - for (int i=1;i<=total;i++) - { - cin>>bind[i].x>>bind[i].y>>timeleft[i]; - } - brain(); - } -} diff --git a/orz_0_6_3.cpp b/orz_0_6_3.cpp deleted file mode 100644 index 96d2de2..0000000 --- a/orz_0_6_3.cpp +++ /dev/null @@ -1,560 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#define state_up 0 -#define state_down 1 -#define state_die -1 -#define ID_0 0 -#define ID_1 1 -#define ID_2 2 -#define ID_3 3 -#define mode_start 0 -#define mode_right 1 -#define mode_up 2 -#define mode_left 3 -#define mode_down 4 -#define mode_halt 5 -#define mode_idle 6 -#define mode_draw 7 -using namespace std; -int map[15][15]; -int minimap[4][15][15]; -int now[4],tot[4],area[4]; -int m,n,j,k; -int x[4],y[4],state[4],trappedleft[4],scoredecline[4]; -int now_id; -int edge_color[15][15][15][15]; -int timeleft[200]; -int mode=mode_start; -unsigned int relative_distance[4][15][15][15][15]; -ofstream fout1(".\\output1.txt"); -ofstream fout2(".\\output2.txt"); -ofstream fout3(".\\output3.txt"); -ofstream fout4(".\\output4.txt"); -ofstream fout5(".\\output5.txt"); -class dot -{ -public: - int x; - int y; -}; -class player -{ -public: - dot* position; - int ID; - int score; - int state; - int trappedleft; - int num; - dot* road[300]; - player(int ID,int x,int y) - { - position=new dot; - position->x=x; - position->y=y; - this->ID=ID; - score=4-ID; - state=state_up; - trappedleft=0; - num=0; - } - void insert(int x,int y) - { - num++; - road[num]=new dot; - road[num]->x=x; - road[num]->y=y; - } - void cut() - { - num--; - } - void clear() - { - num=0; - } - void change(int x,int y) - { - position->x=x; - position->y=y; - } - void down() - { - this->state=state_down; - } - void up() - { - this->state=state_up; - } - void die() - { - this->state=state_die; - } - void paint() - { - int i,j,k,s=1; - for(i=1;i<=num-1;i++) - if(road[i]->x==road[num]->x&&road[i]->y==road[num]->y) s=i; - fout5<<"---------ROAD----------"<x<<" "<y<x==road[k]->x&&road[k-1]->y==road[k]->y) continue; - if(road[k-1]->x==road[k]->x) - { - if(road[k-1]->yy) - { - if(j==road[k]->y&&i>road[k]->x) top=true; - if(j==road[k]->y&&i<=road[k]->x) bottom=true; - } - if(road[k-1]->y>road[k]->y) - { - if(j==road[k-1]->y&&i>road[k]->x) top=true; - if(j==road[k-1]->y&&i<=road[k]->x) bottom=true; - } - continue; - } - if(road[k-1]->y==road[k]->y) - { - if(road[k-1]->xx) - { - if(i==road[k]->x&&j>road[k]->y) left=true; - if(i==road[k]->x&&j<=road[k]->y) right=true; - } - if(road[k-1]->x>road[k]->x) - { - if(i==road[k-1]->x&&j>road[k]->y) left=true; - if(i==road[k-1]->x&&j<=road[k]->y) right=true; - } - } - } - if(top&&bottom&&left&&right) - { - if(-1==map[i][j]) - { - minimap[ID][i][j]=1; - } - } - } - num=0; - } -}; - -class enclosure -{ -public: - player* players[4]; - enclosure(int* x,int* y) - { - for(int i=0;i<4;i++) players[i]=new player(i,x[i],y[i]); - } - enclosure(){} - void pass(int ID,int x,int y,int state) - { - if(state_die==state) - { - players[ID]->die(); - //Needs revision - if(players[ID]->road[1]->x==x&&players[ID]->road[1]->y==y) - { - players[ID]->insert(x,y); - players[ID]->paint(); - players[ID]->clear(); - } - } - if(state_up==state) - { - if(state_down==players[ID]->state) players[ID]->insert(x,y); - players[ID]->paint(); - players[ID]->up(); - players[ID]->clear(); - players[ID]->insert(x,y); - } - if(state_down==state) - { - players[ID]->down(); - players[ID]->insert(x,y); - } - players[ID]->change(x,y); - } - void make() - { - for(int i=0;i<=3;i++) - for(int j=1;j<=10;j++) - for(int k=1;k<=10;k++) - { - if(1==minimap[i][j][k]) tot[i]++; - } - - for(int j=1;j<=10;j++) - for(int k=1;k<=10;k++) - { - int mini=10000000; - int minID=-1; - for(int s=0;s<=3;s++) - if(tot[s]score+=area[i]*area[i]*10; - for(int i=0;i<=3;i++) if(0!=area[i]) now[i]++; - memset(minimap,0,sizeof(minimap)); - memset(area,0,sizeof(area)); - memset(tot,0,sizeof(tot)); - } -}; -dot bind[200]; -enclosure* game; - -void generate_output(int diff_x,int diff_y,int other_action) -{ - cout<<"[ACTION] "; - if(diff_x==0&&diff_y==0) cout<<"s "; - else if(diff_x==0&&diff_y==1) cout<<"d "; - else if(diff_x==0&&diff_y==-1) cout<<"u "; - else if(diff_x==1&&diff_y==0) cout<<"r "; - else if(diff_x==-1&&diff_y==0) cout<<"l "; - cout<0) - { - //Upward Road - if(j==0||j==10||map[i][j]!=map[i][j+1]||map[i][j]==-1||map[i][j+1]==-1) edge_color[i][j][i-1][j]=-1; - else edge_color[i][j][i-1][j]=map[i][j]; - } - if(i<10) - { - //Downward Road - if(j==0||j==10||map[i+1][j]!=map[i+1][j+1]||map[i+1][j]==-1||map[i+1][j+1]==-1) edge_color[i][j][i+1][j]=-1; - else edge_color[i][j][i+1][j]=map[i+1][j+1]; - } - if(j>0) - { - //Leftward Road - if(i==0||i==10||map[i][j]!=map[i+1][j]||map[i][j]==-1||map[i+1][j]==-1) edge_color[i][j][i][j-1]=-1; - else edge_color[i][j][i][j-1]=map[i+1][j]; - } - if(j<10) - { - //Rightward Road - if(i==0||i==10||map[i][j+1]!=map[i+1][j+1]||map[i][j+1]==-1||map[i+1][j+1]==-1) edge_color[i][j][i][j+1]=-1; - else edge_color[i][j][i][j+1]=map[i][j+1]; - } - } - } -} -int update_distance(dot* start_point,int ID) -{ - //Todo: - //1. Get unpassable lines - //2. Do a bfs - //Note: - //1. An edge label 400 means specially defined unpassable lines - //2. This update process is only valid for a certain ID, i.e. the defined player - unsigned int tmp_distance[15][15]; - bool in_queue[15][15]; - memset(tmp_distance,0xff,sizeof(tmp_distance)); - memset(in_queue,0,sizeof(in_queue)); - queue* q=new queue; - q->push(start_point); - tmp_distance[start_point->x][start_point->y]=0; - while ((!q->empty())) - { - dot* tmp=q->front(); - q->pop(); - in_queue[tmp->x][tmp->y]=false; - if((tmp->x>0)&&(edge_color[tmp->x][tmp->y][tmp->x-1][tmp->y]==-1)&&(tmp_distance[tmp->x-1][tmp->y]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x-1][tmp->y]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x-1; - tmp2->y=tmp->y; - if(!in_queue[tmp->x-1][tmp->y]) - { - q->push(tmp2); - in_queue[tmp->x-1][tmp->y]=true; - } - } - if((tmp->x<10)&&(edge_color[tmp->x][tmp->y][tmp->x+1][tmp->y]==-1)&&(tmp_distance[tmp->x+1][tmp->y]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x+1][tmp->y]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x+1; - tmp2->y=tmp->y; - if(!in_queue[tmp->x+1][tmp->y]) - { - q->push(tmp2); - in_queue[tmp->x+1][tmp->y]=true; - } - } - if((tmp->y>0)&&(edge_color[tmp->x][tmp->y][tmp->x][tmp->y-1]==-1)&&(tmp_distance[tmp->x][tmp->y-1]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x][tmp->y-1]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x; - tmp2->y=tmp->y-1; - if(!in_queue[tmp->x][tmp->y-1]) - { - q->push(tmp2); - in_queue[tmp->x][tmp->y-1]=true; - } - } - if((tmp->y<10)&&(edge_color[tmp->x][tmp->y][tmp->x][tmp->y+1]==-1)&&(tmp_distance[tmp->x][tmp->y+1]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x][tmp->y+1]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x; - tmp2->y=tmp->y+1; - if(!in_queue[tmp->x][tmp->y+1]) - { - q->push(tmp2); - in_queue[tmp->x][tmp->y+1]=true; - } - } - } - for(int i=0;i<=10;i++) for(int j=0;j<=10;j++) relative_distance[ID][start_point->x][start_point->y][i][j]=tmp_distance[i][j]; - return -1; -} -int calculate_area(dot** x,int dot_num) -{ - int i,j,k,s=1; - int ans=0; - for(i=1;i<=dot_num-1;i++) - if(x[i]->x==x[dot_num]->x&&x[i]->y==x[dot_num]->y) s=i; - for(i=1;i<=10;i++) - for(j=1;j<=10;j++) - { - bool left=false; - bool right=false; - bool top=false; - bool bottom=false; - for(k=s+1;k<=dot_num;k++) - { - if(x[k-1]->x==x[k]->x&&x[k-1]->y==x[k]->y) continue; - if(x[k-1]->x==x[k]->x) - { - if(x[k-1]->yy) - { - if(j==x[k]->y&&i>x[k]->x) top=true; - if(j==x[k]->y&&i<=x[k]->x) bottom=true; - } - if(x[k-1]->y>x[k]->y) - { - if(j==x[k-1]->y&&i>x[k]->x) top=true; - if(j==x[k-1]->y&&i<=x[k]->x) bottom=true; - } - continue; - } - if(x[k-1]->y==x[k]->y) - { - if(x[k-1]->xx) - { - if(i==x[k]->x&&j>x[k]->y) left=true; - if(i==x[k]->x&&j<=x[k]->y) right=true; - } - if(x[k-1]->x>x[k]->x) - { - if(i==x[k-1]->x&&j>x[k]->y) left=true; - if(i==x[k-1]->x&&j<=x[k]->y) right=true; - } - } - } - if(left&&right&&top&&bottom&&-1==map[i][j]) ans++; - } - return ans; -} -int calculate_maximum_safe_enclosure(int now_id) -{ - -} -void brain() -{ - update_edge_status(); - int original_edge_color[15][15][15][15]; - memcpy(original_edge_color,edge_color,sizeof(original_edge_color)); - for(int i=0;i<4;i++) - { - memcpy(edge_color,original_edge_color,sizeof(edge_color)); - if(game->players[i]->state==state_down) - { - for(int j=1;jplayers[i]->num;j++) - { - dot* p1=new dot(); - dot* p2=new dot(); - p1=game->players[i]->road[j]; - p2=game->players[i]->road[j+1]; - edge_color[p1->x][p1->y][p2->x][p2->y]=edge_color[p2->x][p2->y][p1->x][p1->y]=400; - } - } - else if(game->players[i]->state==state_up) - { - //Downward Road - for(int j=0;j<10;j++) for(int k=0;k<=10;k++) if((edge_color[j][k][j+1][k]/100)==i) edge_color[j][k][j+1][k]=-1; - //Upward Road - for(int j=1;j<=10;j++) for(int k=0;k<=10;k++) if((edge_color[j][k][j-1][k]/100)==i) edge_color[j][k][j-1][k]=-1; - //Rightward Road - for(int j=0;j<=10;j++) for(int k=0;k<10;k++) if((edge_color[j][k][j][k+1]/100)==i) edge_color[j][k][j][k+1]=-1; - //Leftward Road - for(int j=0;j<=10;j++) for(int k=1;k<=10;k++) if((edge_color[j][k][j][k-1]/100)==i) edge_color[j][k][j][k-1]=-1; - } - update_distance(game->players[i]->position,i); - } - memcpy(edge_color,original_edge_color,sizeof(edge_color)); - int now_x[4],now_y[4]; - for(int i=0;i<4;i++) - { - now_x[i]=game->players[i]->position->x; - now_y[i]=game->players[i]->position->y; - } - //Finite State Machine - if(mode==mode_start) - { - mode=mode_right; - } - else if(mode==mode_right) - { - if(now_x[now_id]==10&&now_y[now_id]==10) mode=mode_up; - } - else if(mode==mode_up) - { - if(now_x[now_id]==0&&now_y[now_id]==10) mode=mode_left; - } - else if(mode==mode_left) - { - if(now_x[now_id]==0&&now_y[now_id]==0) mode=mode_down; - } - else if(mode==mode_down) - { - if(now_x[now_id]==10&&now_y[now_id]==0) mode=mode_halt; - } - //Output Area - if(mode==mode_right&&now_y[now_id]==0) - { - generate_output(0,1,1); - } - else if(mode==mode_right) - { - generate_output(0,1,0); - } - else if(mode==mode_up) - { - generate_output(-1,0,0); - } - else if(mode==mode_left) - { - generate_output(0,-1,0); - } - else if(mode==mode_down) - { - generate_output(1,0,0); - } - else if(mode==mode_halt) - { - generate_output(0,0,0); - } - //Debug Output - fout1<<"---MAP---"<>label; - cin>>now_id; - cout<<"[POS] 10 0"<>label; - for(int i=0;i<=3;i++) - { - cin>>x[i]>>y[i]>>state[i]>>trappedleft[i]>>scoredecline[i]; - } - if(!started) - { - started=true; - //game=new enclosure(x[0],y[0],x[1],y[1],x[2],y[2],x[3],y[3]); - game=new enclosure(x,y); - } - game->pass(ID_0,x[0],y[0],state[0]); - game->pass(ID_1,x[1],y[1],state[1]); - game->pass(ID_2,x[2],y[2],state[2]); - game->pass(ID_3,x[3],y[3],state[3]); - game->make(); - int total; - cin>>total; - for(int i=1;i<=total;i++) - { - cin>>bind[i].x>>bind[i].y>>timeleft[i]; - } - brain(); - } -} diff --git a/orz_0_6_3.exe b/orz_0_6_3.exe deleted file mode 100644 index 770c75bb8983eb4cc961ed87e2ca294c916ac035..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 156344 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%0DwH%0bzp8{TT7W`2vcZtHFviHv6|dcz4O@ z?mHoQ@TZ0!1r`X<>Mv;I+i7HS-`cc3pKlkw{^DzdlL;&=}gkd6K-w{8%;WeRooA?Mcbv=?Fr4?AIe@!H^uuy`s&auw1fS4*N4c_o#c}B z^zNX1+lF4P364vTpfhgVuY}*c%R_b)Z3D2Ht1#fRs5N>bZMfFp_xva*;AzB)8!}QL>X2!&2o^v&Q2E3 zJhp4h#tQLDh-yNH+?nLoE-NF3^l!iIL^=Y!On8vKJLY+p{W(_DMUo!upaq87sVwgb zYj}(lu~a+g%zu0Oo^4J+afhbNLxaVKR3K=ZfvVh%It`Ed3?X?t*qY~+GSNCHC`X?u zgLOIfp#Y%~doE|N0GV`J5S?K@9knsrbYOj3w%jGqhXN|^xN^~>D}61zR+LzHR{qKa`CBQUdPdgQg8!8b9vz}_l8HLkZLM=NW&f;B zEg_RnR!SNe@?^qBAykuY*dbljgX-6)kLOl;2DFq_w+l^Bb?F>wV9Vw$=`h4GET{5A z9v=Q153+h<<)ycB0hW-=uk2(t5E;X#ES>j&hG9E2m*HqGt)6dabC`v_3FAQsi!3AL znR;A-)3<1BbOiMqh`AAjunm@DJg?(ta-4eVzcExZ$0CXk+0}ET?PS_<-Wr|*Q}Ey` z=xp{Jp)n+#V51>Q;Jvm{c)|OlPly2#JQD;deG56NDRLN81|A1W5G=fniis}`0WF_G z5Fl%ZMO?I z73`KCqTyPrCrl=Km6U|k`+13)X8V&?^(Bm2S_4QhLF zfEVP=Ac?U$X21kFvt26CAxRBjQq)m%)S%D@TmBTYXm)hWO|Sy9pJEAfZZ!%Z4`L}~ zBh=6=dV!p)W*xfUXibCrxVvx7PGR`Gwi0;6zC(sbWc@{Y#4h9zDVl>weX#qjORft{ zA&mxuc?7q+@PmY=Jk*SVhA{mg48>g-m0W>UYep}{9ZhuXRqYG)R-on@Mx*~Lcg-Mx zu3Poi{iXe>#UL9kU_Kl~I=H*t@?6Mc(F4>`Py#%pBPT${8?uR7bWSzt9L2Fqo+L^C zx9IRX_c)TqUC_!CHaXF;to0pxD~}~)IXvWuReUNl<>jh9yBlHlJj_O- zSU#I=`K+nm5f%lL-QlJLHrZ+qj3`SHySGzaJjKkmYV_{e8Rq{E9+aS zki1Q_E^Iv5^Z8S0lU6c+ktSiHUOC1Q*fSzYXk>~ploe){vOs769HTjSd!OvF?xmP-ZSFQ|Imm5ruijuB#GuNIuG-u@O`9W;s2m=V}K&t`ULd57}Kq$ z?sh+dB=?e7IWi*&y50_&ywL)d>J;6WiM8+h@Z!B$x6?TTqX*(1wS8Y$O)Z)l_X_OD z@p?;JDjg6I^a3gOlT0}>Qyz6cG!>z~4Emgm6TXMPWERF}9iSdQG@;PA zlP6)-$uGkB4r@M#UsPi8ay)E7?kGM4&3!W5E%ALcyh{E^GS z6#8V-KDLOb4~7(2ZZK4mJxm-uiiu}}-uhWNCSpMj$>9lDvu1K;0;Mp<7-#gW9oFj- zM>HDJn4^s|6o?uLqJC*!=;BC`PM;1T&y(Jb(|PnHg0BwT8SJ3`f_1%k`;z|1H%5x) z2za0D1l0u3m`|8xhzSGGR{9|{(4qN!8k7c>N*Ah$7*`cpE%p`y*K?MBSo56RP8XC9#Di+3%h0ZwN3K^P`_nPAkGZyZ&Wc}Ix{ zi}~IMGUTawjwRnO!NHKv@&UtmA4&dHh3vx?-c?=VWy$_c;h~0kZjJ9bQDwuLA=I|? zJMJ6DP`2k#{NC;mAA3MYd!43_b3LuFJLl*x zxjnKgZi?@Uo5)M90A(7odp5>*#f|K*#GYL7$>Z*Bo+SL=!XVPB1@A^%6*gt%Wop_b z>%J{)E1I{4S5U`_K~Xx^`DuugN$DR3ZVw*77-wSE(-`F9ND7qzLN`lzLwR?6SOodycR0l*qUd zZqYv9jaEp94e3NYrCP847zEEq4Tx15ZjdpuIQ5G@VovH?eZ<1lKlBmH=Hl_kdfDMV zVqcH4wmzb{XW3u+h+p?E`|m#D4_O3!q>n_+yglV`&m+CXH@)Ta+1I3gnI;yE{wPh{ z<=CpdpC&#`N!^zw9?~~D@bGn-1j{}%wOR~MT_~ofRthij8Wp)Lq^{KS#c27QKBS;b z)XV$ceb2&|Nxd&=;!Tp9bP?xhr_RIue`=|}bZA?((}j4_f#b5W$%AqVF@tEZU%vY;0ubpwt&N@oO#h1x;*IdFiuL=L;Xo|NZZuWdZhcH$FRC zj-P-3`(I~)>ZV4I<&@ zagqOMJnNkA6kGd&hPwa2cAu7QnXAG0~QsV!8zc4BP({7qBv=!-E|4dz9jfxw9TpZaF2XBo;GN~fR_D*khjPLE9 z-+MTIr}Q3!U&sF5V^HM6H4)d2rbwjR20PT@$>^Ovc6)FA@}5qVSL1Tt7KvaNUx@L& zU6j{^D?cXhKI9ERUJs=7kKi`oDzN1xlG_D1k~zdyQ@i1ft$OUIp;*vay9XDLFjxhZEzMxA(;G zX1x-LVEkywd3|znj{2`igzDL}siTq+6WP-RP_pNJ&qN}NkeYZCno}I!?PCc!5w1}e z4?d}U%BbtBl9Tn=FJp9^lN_G&1o>_F&l8h#^>O04U`DddgTPxwqh-S`uxZMQ)R(ry zrc_S`DzAF-0 zh`3?OkW!(Oki_#Ku8;4DM0mnu)S(iJcs_{h_b6Y5K&e;TcurG1YkEZSB%GIVo%+K_ z`nGakA^;&oR~6vN5J9nkY*r23z1_Ej<0@rD)ty7RLMpi>4qrkx$LS&;7V zN-%~v+m7c=PVYIti$rLQZSt!~4sQzZrrGfvlarE@#yaEdc()|S@6g77tR2;1JV>AS z(A#bGL;d(-jT=CB_T7jvz=`FE>5fi{}YK5`3dm4liO^6TO*MhNp6=-ZZ(c_R3zX2cK<9AxxijuKIxy`$zj-U z2jUiOrRjrga*+KtCTG8++aeM6MWeqcNv?gojJW{KPt7`;k{sTBKaC&vx@!+BFdp~X z`6U^r^k2kp$KCOJ5`Ky05=+0DQIJPslL(Dz$R{o#xCYUa|N4K`s@ipJ_D?xN&u zp8iBkpE5r=yrIWAza;(WTKIS*!e0e3+RXH>`MDIHKpoG+y{R9y(`%BO>mP!S#dchW zbgb@dx*PpiynclApnr+R=|-HZeqP17I-5TnN1UTLMZ7j+TsoT=8a9)2>8TVc$$H)C zQHQ#^(2jpY*ET1fbUps)iM7XvfH&OEFUj^_0DH48hMq~r(~9-S=TnA$Gd4sbbd=h( zYqD!V;CCW%>OS;WE;~Op?;?5VUw8gA6!zhMbH$1IlM6hE*J_OG-pBaL)EjLn<&VjY ztz7F)tZtira$=aRHZj9e6ep8HLnt z>)LK&x(nchyBYoV@!}F5>xejeJYx)+R}fwpeK&8%7;R9+t7=PSNguG?`KurDzYaM4 z0h%X2Nw61OIu94^IT&u;n1s zLDcwuyj)|u)>1v836vabEcz#9O+IT5^h==a#BM%(FTJQ)xJiy}*8DsYxh4v)l#P?94qbpHo_T1~^N`x(S+e7>9f--t z6O#-bS3t+9cAgHoz?4W<18)}k_Y=W;9`g{UZPa5o;}92QBc2n0ccSC>=U1zJMeK3T z%;>F8>^ZNu4w@AI$KYy5`Rz!_?zcO}_Refh0c1r+@65}$W50A~Z+(2v8={`%9_TWl zxP$m(GK7nN-Px=Fun*rc?xzTV5j4rbfNuWicO>= z>3RfZ^cEiWdgo1OPQCVa9f9WZ7Kf+z4CMGTUfQ)2B2DaB)w=}Gj_I5LoMJZVy5r7B zWIy3o_Z~W}S-(By4u|8T3`QD92Tq}@238^8o zYq8p<#^x~DU>2?ofFT<6FA*QokzgJI>^!8=^*N2MHg1XTe83s0EVL%lC66Fp3lDPI}YzB;xWZ zNJ$RfXP+tKGG+by-~as-S-WKGoM&2P?-T~z8N8S-z-o%A~ zL0-In6L3an4xQ7%bsMgGaQzh5W?cJmwd2YtcZxh*=i{P(mms|o*LAoS;<^dfDqL%D zJ%H;`TucH-KL>up?zaD9&JC@%V^SAaII;kfAE6r^)-)!|x!Yc;O>a2>#v z>2rz!xF+D5hpQUbGF+Q+9l_H8Y2RqgZp#@AQ* ztIEr&OMT^Zo=mh0PYq5H#%7CL&9kh^Us7LNj&o_^@7fhU|CF)@zo)*wwqA%n4m=mv zRs^bj6U%BUs(oV-Tquta#>&HNLcHggR0D2h)i`?=%V0>#6kpkrPT9h*m-_rOYZfxq z3eU1~UmeMLc~v!}6!+^hsvE%O>ayy9PrRV3vvuI=hdx5QXyou|JM38Fz~cg+e{oq= zO8*w`$(n8qRt`BVdVng`;eKZM|Pib(Hxfe5nIQ#;H9aZgf=E`#@{CqjD*XkGm%v zi+zjB>z3n?H{C6+UE;$TZ`^^N5ZfFLRSRm$sxby}EUB!kud4A^3ej75XVxsOs;R({ z&W6BZP@z6J;c-q;g|c`DJs(f;UN^P0s=mQ9y^3h;#r}X@;6K> z_jrI@GMNg7c_-C2c&F9*YS?T8kAns?g}i@0iTRGI0wJ*W4JQ|4>4bPcUYSCCI>UP% zBpB)S`WM#ME(LCdmn&!q^yRW)UIgW;kH{`t!4jxyp>7E5LC-S`+;|3!gKRPeuOctn5DZjVT?U^Q;;a*= zHG)Vj1&v8eqaO9yS((x@s%4u{IGD`NpoALfonAVBQt5Cnw3|^#9)>s2dU>y_s4ju^ zg}4LvHA@$XyL)-P<;%*v^Kodo#)|{5m zYp|GvYg3F707$t~!NaQYQ)L1%s+oGs~WL`vr) zSA)L`X^BcVO_AkwcqV?MR61a)d_HiMThL&@HQg;%Abs*$w>TH+DwQrnd2c+go#7Uv zk>+15_1t)!TYQY?DM-tx9DL43x*vG7j(-d(ozpo~>=xsY>PU(I-f3<@=bTEA61_D@ zX}@6y^dmkK6rI)JOZW@%O!DNbbm%;{p#8v-%iZDvq-!7#zZyQ@&1*23fWwGGWTKqv zV-U(|AlQz4;{P)AC_?%m%4uyZ40`>Mx?v9=(hW!hNXG!~Qlt|h$55pEAs^{AT-tOE5Iik=@Iw^(aQ&& zT%^Yo+{=*Lh35@3CB2E)xCQNF<}3V7kc;%~Q1B~|lHOzBf6pP+k&Z&@x?ZM_EBGDo zgNu>>5b|F~x)IO)kj}#M1f-9{E|kuIJXEjQb0vHUQnJSeq-3WlC@23HcqaTNq~{<_ z2R^0CP@a$Uq3LeXfYb^5Oh#G)eXc>8Jzv`In3Ag<leNMScQ@ly+@#iW}kRP4bx7cW5VgD()rqIDt7c} zScqw^D+$3XTj#GA&StuIoQ=nFuy?MykstLQJk=A<7FnF$!%I^e;k;dzXX3f4+9#ZM$Y&?e z!Gp*X)IoV*@h|KhsJ8oWFyoOepX`669sA@x*J-*Ne*DIVbr?T6fY zWgTXmkZG58FN8`-Ppz)4S>WOyf=$t72H!hUrJd;EBn-L58Db(FFr!b|GT>(PnZJsY z3YqDnNm@pq%9Wff_#r0?f5l1FYn&`P%*hQ-KS5Rx=cH~fCpWIPmM zxo9UDeU=U7WcfHwZko->ih52O*K%^}lbkf|4^5D0e{6{ZP z%jo;VQJnm!oRf#{zdC$IhoC$DYh zWbXk^_8sNq_1s&9=-D?zyD&s)Pwje6GqqJnGiiZneqez(vykS@wROwAwAwVLvaGtn zHwbT|asm&%+@-59{T z#|n5%MXmq*K`#1rmDkoZ_|LUJoPXIMS2tJ+{`|{amx-PeG`Yf5Xz+yKlcvlc>Y=OD zUvyDoi9MqX99nuA5hLcLl3@^W`ea&b!Agy%6w6Y$pU%%CydIASYdAB!r59rBU5XI>jwpR4xUqV65nkLzMD|QCpN@qgt$!NW?nKo(U&fE<`y#5PpXR$! z^g9|Cy~uZ?2Z*IbUhz5*wAqADs1m=QR_z!4j>Si<_D7*U5RICx^>Ki=Fsdn9?2+ZQ zi|fkjeZ2BlxE|TR$Nf3s1Y7a#KxRqEE z75&oVV-BZM!do=Gw9qSvr&eYlJBgOG!pR!1!S>5cK!!>^CFMj&93&z?B_eber3bYy z(a)KH2$e<=X^TT7Te?Dad>V!?l$0+jmx5e~@sAXQwIOeSQT(;s0V*HMi%+bu$PR{@ zt`dZ9424*uW)XU8HMM>(L!TcXdZYqi6EKeCA&kLM_Ajbnjf|5= zwu67h$)lcbrR3s$NE{fpR8&<~Vq}p06uEdVFDlbm%LoEJuDup7=;t*cOk-rDopK{+ z^_WA|b;>DdKt1NA-G$q;>9#Brx2I~O5Dj`P)FJ>$18V;QWVH)$c* zI5|sR0lKRO11^zss;2h@kk*&zo(XalW&X0d>HvyP*B(P2*rc2?o2UkeE88?@*#WvG zo8~P4h;GNy?TU@J;no3mIk#jtV!PKE6#P2{fQbBLZ9E5RhdCfgM2pgGB%hwwU+W3=wwNWF8h(1`3)3)5()? z^`Fk{O>E*(HXlR&oZUA35enZZB?=ROJvj~qS)E=Cdb|d>$a&c!R&~{n9$9eR5He^NvNVa43kW0tiJ8ul*UwhfD$zcL9_VIqzGDBY{Vm2u-}n zLgA3H`}fB30xoG7ZauOIovfka%dz`{jmF%w9TusJ&3wtO0#foo=wgH$=6ZYkIQ6sUTKz?eHCPqm)^Gea)0r;ncGKEk$1WG(KZ;=BE z%!zyu8DK;em7?{*YD*q2JEJPzEfYBxDx8afBlCbZ4uK{`n+TL?v1r&(6FI|dDpeuJ zM7bH@w^=CYIVl2`-5_#CS}IWnFjBOi19Brlvo=zZ@`b)~fM2FKu+=HcvxvrVWZV?( z1K|AClc?*oAba) zrQXs8kB5R)inh-rPtNG1AA|hr6C{u7X8Oa4eqleuV8ukAehm6+648fzgj#K)vcc)c zKwX;%m3U(+0iQRKxuUp&2XpY16CaET6pf*5JvkeKpV4S6Mf-@*+29;!*x?rk{2aF5 zl!#PSG7Ijx2sqAcA%t9_1A{bW-+g0LA#fo<1L2FTDvU{Oq8)5Zes8VlBJQBh!TY6}6fJO+$=LB;gX z+MOs}XF-?^MG`91Zm|!fMNY0mdmhkxObj&yFVfbM5zmmlQCTVVKnw!KcNP*Q=X2sv z+HeuRNk`ISxEliW527)|FwL6(q|%WwxW_0X%aCaYkp4i3((32Il-QQQfw$amWV{)v zGKk9;0Q@e7%XwNkqF24haq+3Nh7tS-^4b}vpb_9wwGW@736jVepkx`r&w%8aOfev5 z5VRDeNTXfVoRJE)Y8m*CBsU2FW~B)yL#qOwC?#OnK?J)VaK9i}%Z{*08HNXQ72TpT zzd`s_0KOeVSOV8cx)PQNe+#&@Q=3?A12 zvfP4J!Gody%Y;_JqZx2_Td*p4(1HJ49+1IFa9Wa@4u`Tu6v}=B`0W;sl7?}vk#%mz zLC?lme*s2He^cd{@L!}cK1M?9n2IMZAgQ1YV|k;nl9ES? za}9`=TZDN=B5CHT8Hti4DVj9P;c?SbAo*f6SvlJ&(%LC--y`Kke^*ysR!(|ae)k#h zgsZcz#yF4(Y=}$1FxOz97bhYS<%2{l_s7x)ZPHj?xC~_OjYrDviY(F}JBeh*gcm^I zjYLFHhm8N1PWXmT9s_FbnQ<&)cTA=ciJ_5fty$Jz2tK!1yx2eaM>TzB)0YpcH<$)X zmJOSgW8Q0E@mV}Joy>aPiSv??;F7a&$_1A_46;VV$}s+z6Xar4(T~C4xAB;Cs-m(J zY?bg*uR z!HNFpV<+8AS2XIZ=>)k=EgkBeL<-Wn%m~GH9$4NSkFB+m!mDN~VtLB~%S7(Oa&AyK z9Lox}0$QSwBcv2k`h2B8fB&LxB=CnMxoG)2Q^5hhQmJ>>js1V3X=MCQ`U z0KU*<1!%c*k)?o#t5t4>Z3WzY7Hp9=%z;iVM}Za&!)sRZg&NxX1cNhag0u|?dn}}3 za=SkFLqm0Qe_rYSSHPy9XXKFvOw4gnnCw<; z^F=_q*+Mk=8i=|76D2W*YmBxYD9>1E>?~A()>@JR>&#Q^M%2ej`VO$#Elf*NiJ9Az z<||N4VUnbZ=g9+vxB!=O4^vcWBE|TYXvUVJrNFF+gRLaa^1*HH9Mp!~=}vnzUr z21OrM{0fJWqBxCL-{8kPVLT~Ra=!xf_bd{2jfq5Vq0%^(giUqlKuq{?B~qP5c`kt{ zmJO}}iG^{=DNS$0_tGIz!y z1-r0BWnD;Q80Q7xziQF28wW~>oY{sX7g=7?*)}PIa7-DOQp#={qLN!}NYa^#%`}rh z!D~_J6f;<$n-U9TS>|3)c{~m!Scc_UnOGjfFmD3=Q;WpQz%#;oLjW(Rp||>x66GS9 zK~qB7D$x22#_8cDjAY$6Ii+TE169!H8W$p zRlxb7g=exfW@b!*U#dmajG+LrnZ|D5hZE6|;|$enFtuOD$^-LDLVbqdqzx{ciyKP3 z6pJKxMVbFZpj>aESvrs-7zF+pmw?jXPGJ8e5d~R$eYf?*(W1vdkZLr)3_o;aln)!x z!JICN}Njr+lu|z6WzchnZY-?o>NoIsW+) z@V=M>Edi&pMBZ3({Zahp^yQ2F@||AYG2;9}A?QrU{My>;vg*2pWkRFJ3SYT!&`o94 zGMv!S>2{%SnMkJ_9MJRC)3G8aJyrWE{lZ0ewb;?#!qn=k7A*9OCMMNTjw1p7s>-Tz z(ZnQisC_An>=R8)mLBVBK~pp_b@|*NnwWaS4OMkZ@xTlMcuAX%<2Okz0W2BUmop{F zs;pvBput~R<*Tj`8<{!rk zr(QFZletqkx&8(uX;H7W>nSrY943$EEiP-gL8Qzi>*G|Ngj*`~lsAhNK#fRwlOiFN zX7sPzLNxm?h;VX4$y$1&TmTM;MC*Ko3`k(1jWi<3XS&t-4@ zos+kH_fpwAd7Qj^87F^kL6YY6qM4Z=+`#Mdm{*R0FZ)nw>DOL8LI@njQ82Qwo8$QZ z_#yuExim}m7Y#M|%8!9a*>IS@(Br}361z-Y9@rm_1N%6jk98CJn!t2iCAiE3`xCsS zM~T+s+UXbJP*p~YJdt@y6&g#A>kmC3jMKSa z(XBk4`#0R0r*j{MJs-!_zuyn2m8$$j+OLqe)y#LEf>P0!jBlRK{SzJznGmWWr`7uq zkSh2Uit|xnJ$!v3m!sCd5T8BiQAt8(d1urW3KC7&p&9slc3|Qrfj_z*z}yAXoq1zF zrA%*YFvDxpM#2zztEC}KJzGF|4X*wj(Rx0Nyq}x-&aYWd64TW4MLfK0LMS~?)yV8U zYP3&L@+B@yP|3mheWJvolB(v77_DC8pq@d!X~O<%ok=EDs0$yUZ`P>F-MW5(!*MOt zlARxaiv|a7ae$T%+@_1u7Qssf=zq~1`JZAyTM;pk2mH1su2mC^`$(F=&KqQ3jIr!nRlT^ob<0WZ9k-W2Uq_~L0J>3;9E`m z3o`%5EO3rTu^6k}V!XSuxUL!peS3q4#5CgnI6B#^Z)JV^4o2~Kc!^wyk;nh_Htjr^ z*>NW1sv;`-U^WS~a*U&M)B1B7DL#(QMeEx%YBb}$#V`^ZRuMU@eM`oXt3Em(=A29) z0q{Jkp{wAoY@6fb%WPV8n)9eMiH7)gGydZ;1 z7Vt|Ouo|PijC0W_8E%!%1hNF_OY9WfUQL?}m}{cp1di?4#K&I*a%lAcxzz+yHlCnW zkZI(KTbDZ1i7iswr~$PUHXBkov{ym*k0x!QsAkHAr4u1bF5=M6!LIWlT*{)nuu3wJ zo10BT=+5r>AWBQ|qfoJwcOy*c(Cz}0`(qd>20oks#0Ql0Y+};2ThNi#C@j#YcJ9zV z2kozjzVrY-&Q{@zf))Cy-E*LmrZIS)652*^XjhHKyTZ7XFL5YkgPB~o*}J-DLW|UP zBpmYKP@!!C`7IU;3Ka4*t4$-uCl#by_{AB02@iKh z67^+2qD~HD?&?aR-$c*_+Cb_r>SQBN@LDDOlYG>J4I)fV1C^Ed6Se9L96676s&<${ z{z~mVNb}#g`kwbO#|1~IlM^xA@5QeF&PnJrRxS3=b<6TtC%t~26sg6F4T0_enY&C< z29;kWOGOFv3Mjl~QgJGQ=+v41LQB}8g3NYTKg8|SR6 z1}(Nz1?bcfEv|Z}qIHC5{V6H27Edz7dKzS&>m*hak)n5jk`QZgl_A#OK&QvJSh48H zqW)oWv~WtXN_zJdpi>${>vHW@4Yb;lQW3*E`O+4}5%i_Qym-*?PI*T5<1Z z4)o<{(D@TkHPo`ZDC#N_#+`vuR7{!pPm78Z$0vx2pIK3nW`3u{iHa1QlZuLyIp`E6 z5f;CKIB76j|EI06NFo~HuSLs6>FFkfk-u8I5P74`eCMw?Ec$?&Tv#+kv2ibK&>Pqqn%8Z_&!N<4M>!m zWQ<6ZL})Z=acpFf9s`{xOj^msMmrfL(q|y?wMoVhDT&}{(&FgIB3*PjCUdxy1Kkdl zlZ=iQF$#}tt7Z_on~1RoI2ExZ!lOxx<0A|98tA;!Nw8$%qeYAYBny^*1!nHJq6JGP zK$^rjLb9J%flwfZSW*$vq!kk)dA^}-0m+w%tZd5MilYM|#TAZ`6l=OD5`Ag>)t6Ri zMpw``H@aH@IpFwoHdZtUfhYQZPC>N)$U%eBaaC{#{gC4Zn)K5f==vv)C3H`VT>7Vu zm2}Um3SnLrkqZNd9X^a~$I%b*uApb_9+3uhbo?KM;+(F~sD|j6G zg`*73*D*v6AHS5t_Ytf|%%Va3F{4AfP@6%_GI9QA66{IW0*VM?qAbWx(X=7Ry~HeW zE=IZN`xN>K1#<~trlWkJ1@kCMoecm~(Btr|SY45#-3q{v1-zUI_5uhN4p?}h- zC-kjA-EB%_pgZUgHAX}6bTaX8A$)BzjsxLR?B!cSdQU!t9T#1_NW{!91EPnJrKc$5 z>@JuqY-YUzn9UYz`D&4VT4L7L+eQzN=+6UpyTx7MpW6j@i@=>k;5#7eQ*65PJ4pJ4 zi6t;zOJe?GfI6Pg4ecfRs4fIB@R|Jz;5OUY^OC7v-W9%@=8@xR&jWY6g)d)S(ie7t zZhxJLNko92R%}{8zMG^!n%Ds5`%2s#E(7W`LT3xe=0FV`XS(EzLi)2^NE7|?(4C<3 zeM=PiK9IgAu_*kG&~;>pmw>h}S`0J-8RxKZ_9n$M7jq_2whpaa;I^N_@DTXWV3)v!>y%j^k2ZuF!M35WvJ|8Ri4GituH8 z8>Z0D_F@JpT9Iy0X!cXki19gMN-atRU3;qT^v;P3NVT=8F8oxBe8VY?(Vj&8L zT7Y!Mj-vnI5^QteQuRT-8eZqaYL(DuC#Gb3O-a!SfX2!gIuNY3&a33QsViy*7%Zf{ z2r4^GN;tVnM5KZ5PE2Ez0YxMnSK%cnT&jLY@Ovy744mnn_#uZ zOvk_nmvRTn!z|!V{ARrUk8&s->6J{@gTXV=OxS?NDP`Tohpyu`WaH#AEhZcWjjt>^ zA@W`0y-$63Vj9-Fpcj=BE!I~6)RO$$U67}(2rK3gyh;D3p#4l-`l`80>R)$3owf#yX3w;jU{B!h zpqV<;kXv?nW*Cw*Q@fZ-utAJ)WD+d}!Rum(s%obf4Mj#q7h=*Y4>n+Ygs}5Eqdm%) zwY&!$-#59+7-LoS1Z_8FXBpGFP=>yYB!dlW(j8+fyg4+_)k0j2%N7Wv2Tzi0<)?At zH;UtAYwG(f_`Mdx)6$on&)A)zR}5rjo{@M~QAiuBu^8Q&pTZRMzXtl_vg^;$u#*@< zKaCDd$Df$+XJ_mpB*Px{fLDAR+8*$KKaLFYtOE>6V{PK@q2>skHM4`qQ4d1OW z5Mt^qxIQkMA!MU6Nzo}feP|bqsh!%PlVST3Sni8qtKRC z63b9Tfm(espff5)wp6zcZS=KRe88oYCFe7~uhf~V9Ft7#f+<-%9#b9+8a$r{zvp6j za^2SWmUb3ZWQ<7c@I@4A;-c}`{gmtQu`yhB?c#D`%`&ET!HAl8EF-0rLt6 z$xz-c&sdPyUijJ(aj?UC7R`slJqf}uL=$(?(N58qe9v0iqmM8q*b(l0@c2Z|=fyw5 z+zlmj$C@U#D=S7j*qeKsXYcdPgt}t!p8hH z?NQl{bSswh%_ZVBBK0}Qd_|;KQyQ!jsb3^1l{v3{n`m8fy%1w@nJRJ%P1~HDT*e%g z#cBbWHAG5^b&i}Or)^JCE`t_}wGVU-SYn;a^IehlMv`LD0MwZ7=EK1T;8K3^bMlM6 zJD@v=*4Bx%za&R<7=US_c>_q*o8)Zm^$E}=AGTVskt6yp2fMzs1(;@h0o(Zgb2rT` z?zSd1z0AjZ&r>^%nHy-cCI33iL5YQVgYD8uIK|H&C_TZiaPw!siQDU+6SrOPv&{X( zWQw*0>Sq3tZHF&CnvA+Um0N^4^)N4gmfJIu4t?N&CjSYv>p@-Hg&#h9YpGED1H=Lj zj;2;tR+N5xI2G@ASQ4))GbN_eEr}&ADdEq2)5pSXQen2~1O;s_ew=*hhee<}ON2OC zQBrkNyJj%8%YDs!Q*PSINi27~vAz6YImVJDxMB^B15~?7rJ>;9B-+x@bQhyibe4$s zMR+Cl)zp_~B z74)i*HUm02>5hN!&3OE=N%L<6rg-_UBNp27OhV>MM?Hpt%mYM*-n5VumWq^vggP9U zOREIEk)b_HAbh^3AKo|M5d$3rQ-`OoV@?;v7A%sVcK?cS`H*2>`o-65dm#IMdH4;x|S_>(vI`>r&W zz~>;wc?BK&(!ReSc}3&AY155!#qIM|s7>N1C`JeAi@E8H>dgB@9MSHD@{e4!E{x}W zF;0iN;rELE<=Xaqp6i&uj`7dYZ!x^A`#YSt)l25m}+6b;~MQ!#4S-GCfDY$4fT(Rc7R&C&UgpSy;>2;vY>bkWn|32ICIme58CI)Are-9kKrvzB z|6G&^$V!TGuCjk(kQh_fsd>;~G2!2(B172f&g@^}R!nq|=*Id+koYAe>N-dm*6-93 z6C10`_UFE_lMPNNL?o1Jl#CGQ-KVT?q(Tiwb^n(|ZE9K_`ME;|X0n7M?fXeOm_5aU+ z6XzoW4)yr}k$(q$W?*VLzRl33Ao_4augeGuqea|jH4xY| zFaE?NZU2j2lYdMzU{NAJCGD%nUz$9qX=MQW|JZvIFe{344Y>N8Gefb6<1i}9;>ad0 z>@$E0G6)DL=&+~^poiIKWcE3S0mX=jii!r57)?-6F=B#B)Le;@ND?)em>V>BHHk?~ z#4RxiiMU0L|NGX~-P1<~xOwjL|IhOusQIeD`nFoTy1M$S9R9(nk35%gmRE)2Lg3ya zXDgpxJ)Xy?(`S2CJU}Yv6;CDbghoH1r3L3|=KNYG@zh401Zh<`rl>~bd`B_;(xpHe zKF}-&o#x@$j!qm>cgl&ahjQ9S-Du`+^2KE^C(qH&Sn}%3#k+91uCDv&{Y3)RE)vCj{$N`W>b}Qa9Oh1qX3U5 zT3SuI7*kpV&$!eHb3G=&FN?@osncc?g95A61;zs~Re_;NUBi&Lc9FQo(( zx=mHwEFxfx$oVeaXL>x#QwyE#rLn7!d9T)4qZ5%p-eYa$e00WnXMN7vfFzs=+s2{* zf=O63QDNG}n7HUKe5zFWuzV9U(lSfROV!BjgdMX-)Noq`QVrp9}@WEu? zMH-clFIeGvif;gcJW1sohvBNzU4!cxIOeqzU;nTO;EXccoRzEELfn&%R3oGo5S239 zD@!%Dp)^kRmZ5q)9+#?{kM7z?${8P1NjySTw*-@fRy-|sDzF~^DIY;=lL7xZbGmPg6zB2%N5&p^^vb+hO@R%i4olJXCP zT?>$FCAPLuWUJ^qRLgwA$y704rc6+Y8cLYCnc99HT$@9&I)^4%4JH?83Z7}JD8Sol zi*B4QIv#YZD~h$n!d2as@+W9+o`D;x>LpdKhDK{4JRjFD|D3yF39c zEDu$IH}|6NuT`Jmfxf0spnQZ*u5S{3f2-O#5Bl|OHOY;*yYzicrSk;fNIIOg_Whlb z&Xa*7(p#I*7Jt70+B_Z^+@8HERf`j*`~Ff9yx|1!Qj-#gHuf$+?sjxhWwUDFuan5* z$-|0Lr!=VC{!!V((};b0)VP6poRrYv}v#&^(KT9puh*n$Rsp97$&$c(W)mPS+vu4iLX*~H^ zD^X*wsv7W?f+I>2s9is~oo%#C*he&#wmFM{HzJ9tKRm)w8pqq5`XsO*F~ zD!WVPQ~1WIOXpMhFm^2WM44Sa{!y--N6%e}*SL7P6P-^dwep|P`Al|*?~_AQ9=qq@##bwl)c?`*8?b)MqA0xN%y&?^^MdX7@~sovj#`_$ocdLmWiwgPdy z_b54Mct@?km%j*_(|v39Z>aBl0XJj>j%6Da%E9#VDPu}2DzG=I6(>oHZ$PS-grvok z)|YnVYy%FvPL!}Y2QLi1DetGWhal%Q zW;N%l5SR1C&9Lws?|EjoyaSmdhWidza9|w{7dju(lDM_I-e1Bu7cvMV}}IL7QtMLvaB zh!#2#As|e@zT?B5dXLA5Zdh;`*O0ESY^g0b8&{Nv$m+_LahTEJEr0$Po|xO8%ghZT z|BT^mCmt_Lmx}x|^=0o3kj9bDMMU&OK(!w5AN11+FP;BK9zpT_)t44hWMZ$1?3HU& zkyX@I*W!^gzbH^lytAlcVgy@CzO3~5_@HFvuhPY@%3GfVtoT`lE^+`taLL({%D0ty zrIDs8v+Gwwm8mb4%x$(Z8G*0C`?XiX?b;9FPqZJxXS4&tXSD;upK7m!yXc3ohgVwG zif^7njdm1pQmX%u@JuEw44xPt4hkl*U`tOwq2&yM$U_*WwcPMfjS|3M{V8O2yWYvAE+zaR2Ww++ z;D9_@=FNh{d6cRO_233}g#3~x{dtd|I z;cLL%=Rm6s8ft$r$E7a{{>+`ZD%K2)3dK$v|eFHYzI1($(U`vCn~I-ifE5k$`a}iKnypw^ugL zv5C=dH=c8OB~8jwiAg~nriV+!@P0!c!ECn^+AN=~Qx z#s+NM3#l&9X?ZFw6;@xU(|W2j--OW`-MbT3`r&&O`y{zuD*BDl`20={mDQyI{8)`2 zpiHi6DJ{pr+G-Nj?{rRhV*Lkq3SrOC*poXoCCgirO)Zu1u3gzG`kkrqrvQ)ANtPjl zO*nB)^c$xWPVLkXW*D#WrvV>kI7=rCp(L1&YG{T16Et=x$$e~*#tuXK!vi9Dn=l=PeSj$8fCf@T) z5>!y4-rUFpp9@P8d|Z?XK9tG?o$Qw+`gcJ$AXhFoSj)tHxGqWjaVX>ahVd`m$;$-2 z^_Q5xJeRpd;q~7IwNP{gbS^X`GC}A6GQqsa1Yf4j@@iZ4n*cH38MV$qzv610BZqGc zK)_W}^*%uKxr^(a9$k)W3i>Bk-PEMtO@v2ZXcm0Nm0P5mU8yk zfu||m^cAj`fcf~X)AehefvU%N^dfE-dcd1%Tr38ju4;yk#r1-g&#IPq2A-joc-Dr} z^%Bn|a?sTtHWMzv%L4im@7tViObOs<40>l@yaMts6C$BWK|pEXUg?dl(>VGdH|#6b z`z^(e&l&WQH>S=YIZHMIK2oEX6JReT1Xu|ldEG%j8*UmZm*U0fpvB5$ zZ!wTL{DazU2Dp?ISa%yVOfAuQbc(LaUnSIvLBlm8-J}N+>cpTC`YjzDr`v?GR=lAp zuMvZq)yqZiuT0~!y#B*t)~^|v01Ms+P_Js}cHJk0*(ftHXqCq@_vnmWcPW-S67de9 z5+moJ2K|nYUfQh%%)S_Ot;f>#=(k zKEw~gl>h8=3Ppe;LfN7pit6j`J6 zb+;+(IavkzDyI_`bwpO7zRK&=(umjlS)<=oa(k9~Mt9a2uXMc-Z3w;og*4CaO}c%Y zqa0vlosFmS(VE9Pyr``e-d*5(I0G;0q8xiLvZniNqk!N?R=Yv|ien+6I@vpGrcdg7 zbod;E37DmABXJEq*odrIKJ{pgn?ierfc7j$@8<=a6^(5u*o%C=0%B-U85n9E6G+od zA`4$A*bI+MtFOau0Lj`QSw$@jp?5D+Fj%voGgKmuM)*drZ#S>6Xd@B2lC))RiE<%Q5(c z>c>PGHvKO~X*?SiLL@V}({Uqv%o>fWVD{q3oxlZdIj~2Q5j^!z(5{V;CPimT?KZOk^tz z{l=Fh=rdm?&R2MT=vR_BV>BWrC0HcyT3*c?aOTSEY6Kz?KM86|7KvLCUMJDJnn-0=)ut?!*eT(%dK zjChMV7LK8`#TZd_1jDI{h+MX+ItuhV*`yI{z+&~3BC#K#Cpgcipho6 z$asBM1rzmo3QEzyA+a~uu0tpW>kUZo9>JeRXA$_TVanMiht;sg#1o>4W8A_CMWPvD zHTa(=|10hIQ=*B(+sBiO#PQIx6LkL|-Lc;Y>q$}1tbiU9haL`hlcA#o;bZWR0IN5l zJ-=w;2$u(%lM#l;(6UHZ9i`(CcN%CWBGiEHYSMi*Lf60%E(IFez6o>>lJ4|xhV7ow z{1uSA50aKzkyW8HP}g#qi`U@2pv70TU>Gtqi<*lk7Kvxcs7|QLYUYznY+bTNA5N9k zqOUK-O&z0ktG>FVrK~Z9S%%0;X#~2asO^is7Mn`T5LA0&#A7Sk%<*wC>Pzr|E<#&H9w7nZzF*WztqTu%|8e74kGa`2`XRI_<6i!W?$0R zbDMt+x?<9yMf^%5i&=(kRCNS0b^_Hw!tZqA4AD&NbOd65udx`gm*R<_fuEIBCb20L z`<+DA+sXMO3fo~hPHgK@B)*wfBvzozyseO5%`e50DEGIuIDN5=uNb#vQZg^WM-D-sKkN;x8{ztL9Q_D=62@$)`K!ZT?jMb^nG zF}`l|Rif=1eT&4EClrZ%KN;SiVQGBbCM3_uFA~E}ED{s^@IAM1M}a+qP#739tvEjr4eRNO<}t0zhVK0oG032uk^44 zRGzM5YbeDYTg)t3IR#;?{-R4)4lCx`!9_Td2$l2rCR7fZ;CzoW23854EcnKdDBT7U z&Hce~4LE4Net?awOVMh3(XYY!d@~Q z#m&8e{WStP_89C8a9lD3W8cssG1GAT#-vSau0=|Jq>$q^gPn}*KLFfMh5--xe=_)@ z=Es1&i&#+aRao9Bnx6*xCZe$#ne~>zZ%4<$Zvo4lB@^rm!MLV)-crQHRd`ll{rp`C zVy)aTsz~f+&0KLGOgqV7me-Y*Ro02De|jGbL(@;sU9JWxoM)N!iEd-*@-`ALLKqHC z=H(wsXe?bJ(mi1v8fgkAU1oKQspgR`ZaZ-VGLBGc7(O=)3q|u^M;3_-VG8ARHw>!3 z*T$y9fE&QE9zo3@81Y1IHAb~MT8&9UW|v`@Ff0*wEGQBWA$*QZzDUmB;7>gT;x;d8 z*HZjDxcVHy7k}AsL&sV8Q%|X}bu&cmzJ-X) z0ICc@>0ksdPm*xZb8R)^B9~)yE}iStkyoqh$bAj+hgUxM?sYYE^HHH5`oBlf&*4u! zHFBDLk%E}|(DO?%$eIv%H0_mP}NTvgD_WB^?g>An)7 zTjB9oHXahU7HRh*s4`^43)E9C4|J;|yDGf{9gSvBP2+KFssaa}UnIsOTnj5cq}(s? zr=IFmBjJH*u_L~P7oZ4AIU{I;JSnS=v>mCOG!o6^)mgap&n^-_fR=?6P>DbFl&iGx zcr?+9tJMg;mOvKk$k36h$yAjOH5(8<$i}-sFnPQ2r=G&8s(~)Wx0V!%mk@?@f*W9x ze2hP;I#mZ_-8azp_bSkQ8=(?(xetIYAAiDhO+2z~DROrm!d;*{gLKm@ohmHc7DX)& z6N+5~d>w+yA|vbxOGRRJGvXqb=b7a4NTI8h1fAW8Qvo%ja_(eZPgpw_(-?%8I|=bL zMeoL+dTNCJ`b7$&q0t{G3lq zhe%{skteoJirjTDxVD~yNg+@(5mfe6QC@>j0Fl3`aiZb12&8oq&|mZ(G=|R*{tDv$Odes0O~Y9z z8tA~7H0Qyfft`gok8~yN=rH{LcnnOb2EGMBm6+<*qK>p3wRG3T*^kv=zjtPl7=(U& zNoOH`2npU#@u!~hRS$cv5RsR0^=Aa7jginG!ox)C$VKI)+P%dT)uj@UeH_BqI%BKF zx53sQf9fesbt#@(w)=u2F%@0l7a$o=k`4Hys=#!C87sXj&;$}w)joP2_dVC5dTHRpSM%I zaHSTs!Z3=JT9Ca?G?#$=dITCG5-SZ|9Tf0{wKYg#?#4sGvEPA$N%#}Y*+Mif9N0O) z%Eu+d3^4h`S_#i*d*(b0IS6S;xr9;{TPcj7nWaQ7&!udjBkAZ;CQMhNR$8y~{)NgOz6i?$2seY=`#VSv;H*ZEUhts9#ZWv#>cPuh=dJWU zK~s`(b#iHZ-GJ;W3XH8AEOKc?1NUhapHn2RKzJ7Vx<3S+XW)-Aj}cawTIlTDHsV^c zaz%3q=6s#oCLoy$pSj$YmdhbTg?HwrD`w*^$x@)M8eu?U-fa>rP0oced-R!w&3s@+OwGjD&8U`#83e)wEPo zseD8#n2E<^gd>i`8!+;f;!i!rv8gsZcLP>sQRh1lrhw!Ml5E5uHP|r1Nr)b7%DM9n zIj-XNIW@>|r{8tTnN=gQO#6>QTyUOM9b5|=N2khz2bAg_8 z!dY72mAGuu5)%;g#(_DYTM4@8&FOkI zqn7pNmUO+EPut79>-8O}f$tG{Lt5?K1(E+k5DoN#JQx$oYY;Ahf(yL`^4pu~nUd$HwNPn_htMHSp~r-=8d>?G&Q+5)NYffd3T1AH-0CBtD3tOAW|t z(0sp+@C#@<>v3qBia+%f%b}}*TV2`0_aS5*B}6GnuEn4Bt-Jx>?C91ls<=^y?ePY0 zHG2ATj0t?m84q@^fjhtXevLPzG%$}+;Qv^G=4NEOjky_BaVItf*79ul*xx|?Zv=Lf z5$cFszi;O-K|kBnQEI4LPZ}{DFJq=~k^~oe$tj{Y8t*8ChhWH*@4=9Z@W&ThPfcvf zA1jEa{4Mt13J@(rP+C<-58XH@dy#DpPK&T>9bUHx{OGXdmKA4*-TzXVa<1no(kfSmltN>eJ?_vT)Y_lFDMv>KlK#J zjQw6gc8BQ&xItWqNy0^#+JV-)9&}&Y9WDuX2Xkq=!=<)6hz2^(o_2AOI0>ELW{ACq zCS3MJxD((R<7MQeOHJH#0t{@}&h2}5M~Yrpp4L1M!tx;ucOh)o<=VD+0_k#DoX)iI z#KGqQe2N!HsxwIyHc71wiY^WDCsnVjYaTqWNW6_;2r`3Z;Q=hphdHb=$7nvktS}>ejN8PK4^Rn?jMtTx8-I;&*Zq( zy0(tZ?+xJohTu0pborNoIG9GK`aC=HrwD~Ta01G9XgCvp>M2(>x-@&+bf8KQlopkV z9A1iCe#~;U;yAFrKr_U$z;dX&0ihl$?}r@kzwoD?N;oRdQIO4$4h6?yZuAkt{h;-Z z`aXN)^y$jKrE^)NpA_I=FZ86~uFaDIu3byK&Z95C1jJJO?;f&GMH4?~*^Gw4 z1~LH_lu)gqCdKblE_wlyKz|d_m z?n-TMmA$(@B|tlpYA*BiZX9 zb3VdcwtNQq5MvqKkMLJAT>67Zu1MX!nWRlKupQf8+bXozviUklz7L^Yrcj#KdGseH z(RhY%_INC`zZTN|r449oy9Q*ht#*4Yo4Z5usR%~<_?RwIrTteZ)1@d+PQWjr_QVhU zGSx$#s`(od=-{)9#F29_l_cGI(0%D>I=Nka+iP3jll}U>4?;UZXd*e;zS!@2j<+v~ z7jjJc5P|ng(RHd<4V9Q`pmwkGzEOt#gQTfEtyV`xv128GD?D< zmfB}Ik_DdSo>P~2+NZthPg4=Qet@OMu_8-hSSSM@m#L=8Ol zcpV&b_cX%iLHsD;5%(fO;qd`E1;Qil4TSn2zEF6?eSmO3@i)O9OaoK+aK;_@hAVu< zguV3oe!^VFO4kB}OAdwvVvmcy8ye#Fhq(u3MghF7qfTfTMf!!t+ z(M=(+f1AZC3W9O)wp3#455Icz_e-64vljk31l{6QVPDz^k=2iG7a?6tFE&VQ zQtEG!=UU__ku|^~&$Gw^ku}gFXINyR$QopkGmFInZY{synLuvK=w~i#?*!ne_k1!| zm%>d^)|=e>2wc(JVzJg6-HJ+xPey#5ch$;v4<$IG>P!3=Os}0%sC-6D5i9UpdaHNK zAv2dQog%*Y;)|b48zBWxICllnO&#%z;e|9(Y5PY zpukg+!DkVlbtLd{$!K;DFD|=wC5MO0PDeQQv0X6zAtA{+pAIrh)I|zLdjj88MY9;~ zcDi8|;s_@+i$c2(^(J&v>{-_rLF>3~xJ?fOH6`a{34)^(O?S!#&A4vl%N?YWdN_6_ zk)4Toj=>5g_Gm{N#2zzLL<~4K7Rq?f-q1C+%SgNeIu1pp453}eJ2hR$b*tz>9ldCA z0rJordFW1}KFDu(Rft(5RWbH8#fZ{oF`nRrWKjs7B>nUW-B=ta`Uq`AKUaiZwaET{ z&1jYZDpR(^bg2$>*|$ZdO&%1&+l-v#uq-T#9UQ_^E-gN}9d@KEj#EM@KK|4Qo`rXs z!qRH$BsH-^LbTI+So~0zM_rx73o*=>VT~T{P@pI`6*a<_YUxHgI@>;U0gduWO&inr zf)KrxQs}VZVjk_JXuQqFm>3#6Egzc*HM-LW1K;}y%*@yrby1w@+NJ6{aorNI~L5*w{7 zn$Z*_Fg7-K#SJkR^Sl9I^nsZG0v*X&)m7Fd*krGeCI1Jr!b_p87tzTOg`jWegKy{ZX1Rv{ji}! zht<`V4XZ9M*T_*LhZPJRGj!yzTI{(`S5yuwKlM~`$Q%$2KW3F@3|mrLKCH3j^23l& zxiocXTn9;w47>j(j|a&aC=pjyDxZg5JlfZbP+w=_wN7IzPW5T699n}a!&QB0LoGhV z#ORc&(`TXS6cl7~cye@d)X?&#CV{GDy4rEA)1B{0eaY0&xlbA$^6>~%0^@uoqzp}! zms3C4O6#f{eT#^3r|l4}j@)V0;$VCVAF9-Adn+m`tAIzpz~MTjE!8ew+lVMS65Qrg z)Hag1T>EHdO!)%GXBa6X6KxJ|PO56j-U;c(F$zeb9qTpFhz5*Am>a^lEHJ&QtwNJP zlXAXIRhm`lhb3tGjPgvowhG2Hr8ZUBr=#P_(zSJ|A+-%>vAg5NV!;0)C{z)`dk>;` zn$p&4M!3YVo>_okUTBFfnn6xSUfHnRC)&e*Bg80E_ zd^d3q`6BoQYW(FeA-^__|2mB0m!n3fH2z1ZPp?zv#|Gvy1F@5Gvnv&1T(-=M z4eSvc+arb-oJb;FEOyCJCUrj&<@l#|oQK~Ig@cIf*r`2YC+EdZ%2OD5E_vj*?DN8x zGh(M20{E^E5^PnM3Yk4)KB!^?4dFPIa;}wRFK0M{sxX1Qj8|91j~Ewk&PTGBJuW+b zf+Vk(tqAxhUX@)F>z^0DI9B8tqBkt@(7hXVLt$m|>(lssp7$_PW2(Nr*xcOgho;LD zW1Vf~@e9-V7SFr2X1@|5hi1#O01&&{nAExa{w=gMWEyN7~ff-t5>}dC%hua+SYFt7C(E$QAJ=Hp4D2N3wBRyT`+B z|MGtrl`ITzT=qj!{flMWEb$x7_}iXWEpL;~3PY=7QrVvUKH>>EjDKS%^_c(W#@Na1HD2~E62%%} z@3^i*tQo*WiC?P!&(ivHk}H$ETYR#h6{Hp!G6KR`V{e-wB%)WuIlKJWlBEH5_1bj+1xkSW_S?d6Qv z2t%L-MxQ{Hhg2P%U3^4dyRl%Um6TF~S7!Tzg_i9I>}7^7u3AR0i$hj|?Ut=8JH9{< z0pqe==NP(#<9vljZo!+JE%cw@e>q*NVyfY;&!0^gr1rhv~9qZno}> zj&+A()%AR@mz({jJl*iVdq}(+50!UE>^iSU?3^R5w)iqL!lJ`;R!uG28A-c;wn~mu zC2R7DyT(Hs1D^}>*9)?k|PIfnxSz6aYFNIM2@-DufC?%VW{Jt)JkLTTHW(UOaTe|prK8|J$KA*U_ zx7Ig{pP|Kn68AQ4l&x~SzOj)se>U*j65c(x;yx%}jh$rk!7s()pLBxyJ{HA~!s0i| zAd1_Lzqt!gCs-7}Mv8x; z1(e96O|g-m9}UI#$6@7|9(tlQrgNcNaE)k@h9Rafbnvc+#w&{j|^{|?<*CYM1SOYXQ^2% z3zx6i<7?P-m1R`G&8qQ#v1C;hQZPS_h_6B+p(slv?u}~d%xd6n%lO-&YT)Mxy3d?! zZRRHf@t>1QF?I!``Yzx_&zty4$#{*WIYsOa8x!8f*aBP5+{hn)FX3&z<_l9VyQd&q z>jK&0X8ib{F)3U3kgV1-bPD5U`}my+6kh)xepPZWef+DeH`Vr-iGpxjVj*y|d;Cu* z<=BzdkQ58==P~c{*qk1E+C?SYl@kAit+Obgg!=~qJ&RSz?bq@5gct9!Hg-vmSXV2S zyQbrBclRESot7sz>M1G(b60fyHd;TxG<({`9nA4(TuBnOgQ!>W+#tu#f5p!ycOtWc zRL8p8YT#DnK&F^=ZVHb7mGT_bXW_~s)eEfUcUc;07-V+1eK!6YwCa}0R>G~X@wc+Q z59P*3$#ZEdVR&YEX2+Ukm&CG%%yg|of{W$T8%UAjL8nips zp=+YOqgiH2aOYtBEt=^lx%;zSc`YaEIc8b4Z#G8ml8iqUXWc*_ZboC(y#S9&v7+4U zjk>Z($SswcFvVvmHTfo<8zSR-F`et?<5e>XTSQWBT8!TrgOS*3;U$RT=D+woaqov( zIkeu0+xt_#T5c&MPj!roTZ)I92FY_Bp8IrmDT&+s;?E}n*lxgbH(GoT9u4#jf`r_K z7r!NB1^3wzRUJFUD&a=D`2Lu8$4u8`DUUncD9_xSD380@G_$ji`_;(YFjHRR_j~Rm zi$9U@8ZNL{O62}7ZK1kht3u)J?k6#?4TTbuHR`W=xaI9S_6=23nC{6Qy2F!&yRG8y z#=IJNVzqqeO=iidoJRBIZxUVQ< z0{0OGIv|B`BT;yu69512e_sMs*shVRD{Y1M7kGeyUsi>vs%>e9Q6xyl!IyAwT+>o5 zns5N6I%HfVi*b$)Hf(^kwzWp6Gf1@4pGx58ss%ftyiDVoyXDooAUUupA6sMUD;u~9 z+=3ND0k6GHO_ddDzfAI?(zKdemTakP zqGar?!C`@o{5(LUYHC|8lU<(#4Gyfq%9%0O$IsCRvvRSqHCP(RyzgIzKAbA);M(M+ zwxP8W-dD>i;q*l>lZxbYbMUxG&P>9AEIvZ%aR4c!ls?-*>U{e{B zRaJ=OIgKsqly)n#rE*DS3szX2-Tsj@f+dJeI7!2cQ#I8A=vbh4E5GVQ@3VyQg)bb* zcqp%L!hS8$QfV@13dp}^UYsD|4A9jcvFj^7snv3dug}GXh^m%GxU;l0<3kI!B00N~ zZLdLpkI|yb+0qUf;;b+&>+Itm?>UMnN{peY!uLd~sa+PMz zy#cy)X5$jw(9*1Q{k?~utI#^RXkq_>rSO34NQ_aF*?yC(VqqQSi{!*QECVNNa13IL zGiJdhA~~(J^=!6p_{*eUb7Y-gs&L2HSK2A8RNtSVrRX-8EKM&pV#N~nAFbUOQ`vsR z;BxVs2r-dL5WcPBlJGAoo|c5~X?#MM-yU4QY;c6H=(r?&UB%Oq@Q)hr__*-=AOiIf zen-b8;Ug-ZmV~@*lSY^ySEoNgAdc`;9hZb(sCZfuigx)JOU5Jz~Ej!VLSsCZfua$XqZ$oKB)l2gc z(g9$QkJo(+j_?E>mxR3sXg)%^iwpAcy05_z=Igj5Ts2tp5z?1hkdN2b864qi9hZbR zsCZfu(*IhJkJmRD9O2D6E(wnquJsYp(N~a<*SQ8qc!G*IE6DBSaglDywu1^6w(dlr z0K#wTxFp=F;%P}pCtE=!T>bj4!4W>D+bI4j7E(v$3cv=$D^;M9Ma+-}S!d4xZ zgsW6MEeYubE6B%Hy3-Ag@Jt<-gfmn;EeYurE6B%{yps`#BRo~dCE+*~PfJ4ju?q5W zx$oBq#1Z~h$0cEJJOi=w5YjVMkdMoOCmI}Ke;t>E-&FCmB;26!?k2?5!iNwji|`R0 zmxRAm@w6nQ@2Q|ZE-7AXaD>KLaq=6`M6?!gvm4Ekvc93d#QL@60-b4e6afnV>{uIIxY#1QSr1S zq~oF>AJ^W8=sYC|hv~Q^yivu|l8~;8f_z+=|EsZq@b5Y<35Dr@gmh38_#n{C67L3BRf1lJH&?$K(-^u7iSnd=c=jX$ypZ(Q&Duc_@kj z(uq)zkFN?QnlXoPl8#HldsQ6z0O>m@$jA2y4;mcdcXV759&h?PA)N;W`S_AyyvZ}+ z1Ra-zOH@293F#Fm$j7%3(@mcwJWt0ZVOqu0l92bwARpgTylln}!dG-$5`LoMX-UYn z${-(KW)zw_B^;yUl5m=erzIi1{RH{=#^ZidH-r!9xFr0(il-$ZUpEB#Qs^IP(?pCt8f3MToNW!n@dYVy2uIg@%_xn`d*nJJXOaf;R+Q`OG0|S3G(s%&55QB z5%$+{NqD}BrzIgh-vs&ihUaEe#)MzhaY=Z)il-$Z{n!NgST8>?IKroOToV3O#nY0I zZ$yH8d{19{2Ps*0y2A?IU3J}w%3U>?W`KhkkY*xBeKn5`aE(~^)5W`cZtcl8TB_9X~^spFFHT@_DD zLXMX~KEB|35P>+t@94NB?5W0D%wGWMLng?_w_wxFy@v2S9hZayOnV_bsa<>NjePXc zc}ftTpyQHori!N}A@7qxeSGQlJu?OnKB421@FyysmV}(I1o_ww{$XShzOUnw@LwvP zmV}>bd_tJta$H|&aD-RsxFozz#nY0I4p4&n_>OJ78N&%D=(r^OP{q@dkj_woe0=4W zWpIR@bX*disp4r#NcllNzLGl;fjGkcIxYz>R`IkXta&CR{Hcyh!p~GZEeYwcB*@2?e|H%h2si4uB&=6s6rPI#>9-`v$Hm3( z8d-#o>9{2Pv5Kc9AzhIK`Iz4lts_CWK*uHFH&qt2vCE-;no|c4sJsITVyUqs^av`K+ksu#mhR!s$6JDU>l5mcS zrzIiFA;`x!rk>W3AdKs{B+OOuv?QdDkRTuJzS`gjuhDTyxLL*1l8~-Kf_!}O+S$|% zVOJfOgr})^S`yO9N05)NW|tY;39ry`NqC!zrzIip=RrQMJKTjp9N|VCmxSHTeVUN& zI)Z$BiF=g65%$n=NjP7{(~^*GHG+J6$2&`p(FwviIxY#nrQ&HxNFNzNzC6rJjz%Dk z@K_y}gsm!`mV_ydckPq&uFuUFK=_4@OTw<^zCy_7g`hsZNdBv_o$&8EE(uRp_t>-~ zq)&?=AKx>3#&*KEj!VLsDvtXDAbnf}`S=?8F0CU$xKYO?;Ug-Jmlc4VR|Wa_uKE&# zBTVYJB)nb4F%JQxV~ijl7btH;AdYa2j!VLCs5lmb0qOrD$j9pq21j_ej!VL=Dvotb zK>EiB^6~m%gCpFg0l? zB>a<#rzIi%Zv^>xz1QFf-_mhOxL?K7l91jvf_%LG(BKF^)^SNVv5>TBNl5P+K|Wqj zGC0C1IxYz>QSr1Sq(_b*pZNdYuNS)9H3-)u+=*a+-A7=^Krxjfv?AEwqj=PN4dHc! zV=(=;KfcFcaqKPA?+W(-{t(!;1VvEXZfhfXZAJ8wP8TaWQv66A6pm-x7R$E7hY$8iac z%WKvfIj5Xl{<5yZxrD{#DK1HIxrs|8Tt2dHvpKcp@(!1DxLhMp_IU^#LP^Uh|OWV05bSEY(3nj zpp$jaTN)ofIW+Qdl8=ylJhYBZ`H08IH$JlQag2{(oL2LZie+nEe_GF*e1zfS$qTTX zwp$mJ)@LLi0ayl{TC(gYi_>pTxjCKY6qnOu>)6k_;p3E5@t`emddaC9r;BW}oc?jj zM;xbcEE`TmINjnDi_<6TVa@tYmLbcQb!S~P@fOD06K_c@Q{G~D`}p7fhE~;L#|d0#ApH9ae4Fi+x1>f4EpIQk z+8{iUFXH$BF4OM{AajtWXcWQM@OMQ_V*v2GA7PWjz;mZMEPAJpNj5eRwcBBaf+VGQ zDMvv2D@Yq;Fd7WSv1p|RgT#y$4lToZq~@2UXz&eQhTnFBO8~|_Ub**$D#e!A09=_8 zTUN~vWrv{T)W#HDdOt=wxs@D|Y%IHs?9{2W^FsU&LN^3uGZA7h!t1zX8OE6148MN? zR~NUXYRgA+(dJ(wJuk#}DCOfU^m>M5*bC;#<;z=yD_ZaWhPL>X0V82gq%n!1mzB4W z!_T`dRSzt>RKs7fTKW7ofA4JD62dh|JCf!MQ%&>bWta~+dz_pjtat@&eu^9od8o0@K@ZvFS#+iXDyRssd)=Fstimt42X2sozzO#&X>T%*O?m ztDm9Mz;Zq8Xe`$=z)bEy*K3Z(a{V2cybids&;~V)mZ9;%F?_1YlB*YZbbE zKbJR{p?>omjpbs`&N+MYqg`XTpNMee7fagt7P8_bN#^4Sg!v8Mvk#u z--LL-&aAF~I2y~<2?lKgR*g|g#RdA`1Wa)UTt9I%mg_@c9v^q$e4U0{k*2X+mjKh`bY(7$TOEz%`Y|wL zJK*}j(O9njD6+w49oWJJj>dA`0?exuE!Py3A*#asY{`G$(O9lO0F!^V)6I2z0KV_=rLe08_RDQNR0I$IjcbviI> zCtC~A%>zHnRqtpl*9KsEpJTZ)->p7$G?weUE@;o^TCO*t2?+DEx>_BL<+>f18IG$I z^p@6-J?CgF*FS*a*&!_NxYr+lqa}Yl#sf`bxy}M+&veT*IHRsAM`O8e0Om8tbwNh1 z?>QRF^%^jH$6H-z(@q5avpLM`W@#+fRA3U0D|7$4)X`Y3CSZ0?u)5k%6hO4owbjvB zt~Y=wc3f;5(J~x}%GWfOs|=VmjtfmIL%!~FG?wcRz&zvbGMQU%U!XOO<(db~B`)fPdd`lSg!Mc>D>WWi=(kzn9_;i#n!^+ zjAa+3;BW4ZnW%o^91p9B{=uKC$^csw4*G>zq&$pAJC^|A=pKznqG)H5(T7kL4;Aiu7kE5|%KLh5S zVq43-0zAI1w;YY-`W%=dcdx7jSM>fh2Gyu(ELR;cTO3y!T-i>aweTTFW4Yc1W}GVx z3|1M&jgwHcn#OW10%n@)mBYbhHTbbjj>dBR7MMM5+{ip)_d3SXSgwnJDd=DnZE!S} z>uO*&kG3U`X<>$Z{m{`^t`C7p&9+>NGIE`JtfjGBcLKBCSvV71(boI2qp@7wVAQrr zRu@NX|7S~crlYZ3HvqH#0?XA5mZ+|G9F65V`#8+L++A-0xT1H5<&MU3eHWN~cXt>D zE^C(`d(Y8Wu6}S|y~dS%=AKgQXe`$k?r07uqsJVP)XD)6rP2-N5vAwT$Y_z_s7eSgszuG2d|c%3K;}I~vPX2h0m@WXsQ} z>v~6Hx$XjH%M_ch%x&Z7K9l}^c`Ux=moUY7e_)kY;xq6>~dUsrz??mT28q0MBFym%f3!g$c zM91ErI~vP%Og`o%j%zHqqP=pwqp@5`VDitmx-xUEbu^Z12QZsED8qj`8q3xHM9jx# zSY4+J9RtA6*79mcW4Yb|W`ncvCD2CiDbxB{8q0MbFx#9i+{`lcl=mEs}}4oRIZ zbm|NDi#em^Fw}SqCG)PaTcr+7Are` zgVUAyzWf(QW4Q(n#R{C3^U+5PX2dt!V@5vI9y99c_Lzbf z+hYpfa2S{)HbMIbA-OzMXG*6)+Hb!Ws7@8v#4OgtAzhcnzM3FGVagTRuzkKYtS_Ycp4rs0e&FT(l z9s|wJ4rq3P=Hm`%{tTMoFz!G$XW@2K<7mcZ%+~%T$sv7?#6nnln*WJUe{2Aat*_&_%2jKDn8(G-CX z6=Qx@&UReya5NP__pl@m4uhQhP6yU?F=*yFnrYyT+I$sgHaVKi^|c)|uXaGQA2d1g z!1fHq^2xLgXsSW8q63<{L9@LBn%{tCpQD+UG4Gv6;oSrV4P9TEX~u$Pg`>$_J{6$Z z-T}=mpxM^}&2G>P#(;UC_9OA|w5S7`D$v~FXo@rD{Z`Pt<7hJH>p9TmV{kr@J@12N zUI#QM;OTj72Q(LeW>*I^H-U!B+Xu4eTc8>1XfoI7TcBCtXfo&hG&~D#?|`NmH2XTB zc^ou@akDs(&98%Ik)z3MbKV%t@EuKNnpL?(GxIkIGW7$-UOQ098Ko(*$SGxV-9T3+n|}z0nPEK>Qx=k6oY1mqsg4F z&7kRathFa|zJ3XsX&ulcCc+*^lR58afo6xJnJhB3)dxT$dRluj+uZeR)R&{ltZN=< zRy!JGAVa^n4K%wtpm_x}@;GZxW}633LVa~Wvko+C9ZhDNKLO1yN0T}43t>Xfo0qb`#oq@cROg~o=nhyu_kyOl1DaPrv$_MCuDCt!?11Kc(0uG@#zoqyU2j=5 zP`Bc^7+T96qyxrGmU^|%VG75^+F=T2;D*2zK}Rz>zmvrjRaKUzh7KPN5}fy_Xv|*X znuxBR5nVYEUHK7Rby-%I%|%plUPLl?WQJ@m=pB)~=pZB)L?oXUkvuLU`E{t)+P}Pf znj+=XJEAKuqH91z*HV{@FW0p+qANe5t7k;l;E1m62cc_4MAtsoT1=}ee5bwSf{)RD zLiIIzAqJn0%5Zf=*ZzpE_aeGJi|A@P2wiI8nm#c4+ z&^VC`yy*j`luJ88V<==hxb`_NJG0Wdz~#MRs7b4Thw?sdk^O$hqt@_m=%m?m2h5wn ziKn*5LqVw$_vsAHB&H~vGtroDpf;ggP>irSgB%pAl}dea^}QA8{GZV^AIq5mU4A-a zhGrt;zCFD1e?y^b!2J31F%4&ffv#wUDVm8BC-yuLjVhnX^RX=P<+?P@L|3OO?_g;6 z+m7pkKK40fHLh4v{?C39#_wu$JA~lsy2i3VL$qx}oMie%G+QFtHo|30jrQBXCf7E6 zJ8aC_Qy8?Tsva(xeS;3g9$JB60d-+D_%Lcu2AfSk9q;T(Elq{Z5r=0_23_Xc$<#rV z&va)`c~d&cN3b+Jt@~y4>@?(4)fe9WXUe<%-qY3TYhb`jk-*Q^Dcf>KW$4=+%@;+o z9qw@La4fFEM%jA5$mI*|Fj>_!Vz{3t%J~iQ_4)zw1s0S;Wy;aG+R+%c1gL2DJCvL* zJwWYHEOWZw<@7XMWzK1}%V|?52ei=6H=InC61scS!IiU(6ezUkLp zrwg&@WQ}2+;Tv9HoXxH@v}BgXWZ2PPQQAL;R~pfJxBD(OqX1auaqrt!MF_IQ^84B` zY6B@l>9%dO0jwURU{|%@EV>XX~B!!H)X-3R@Z(Y_|2a&e?+-BaTt62w8-KUQw#rp8SmV(7YQ# zv)bxX_TCB1rVwTeFh%HS>;<~bKL^aJ5Y2CZ*&U+!6qrRrELXIAxEj)5X|#V1rF@)r zFW<6*5nXQm zaCfJ6GvUHl(YC^K<98q-gc;ov`O=s#f0mIpUryJah_2Tny55WEDmVyTIT2kiM0D+m z=-M06l{g4pJ*_V96!3?ChtkHjxcUmq;FYbf$xc@W8skFXVEX$Z>2k9{C)v&YoE%rD zYa->mAyUp;VSKp#a9@+bn3;^r=^<&~5YfIhqJ2k1`?vo?+Sf+3Z;EK&7SX=uKcszW zMEmN9_B$fl&xmNBVcXatmHhgMcFq$*wOsIcMEmU#?Q;)H`-+J6wGr)`BHHIiv@bj? z?aL$D*F>~)P7x}N(dS0AR~(l1)e-G?M6_>-Xumw7z3#BIZ;xo-7191`MEl<&+Ea(6 z{qczQXCm77M6~aXXkUI<+P6it?~G{Q9nt=qi1t;7rF~08`}T|dn>tSi%9MS%GMEf%l?LYLjn-!RGm|5wWa8>EzN-zX|H4UZpMEQ5C zs#Hz7VKJT^d|hUq@VLzdQriFiW3w;)Zha(I@KlTP7(K+AAX3S46b0jc7l`A8ky%zjj#K7e%x$k7!>L(cUwneeYpu z9~aR+FQT2RN8vWVFjDgG9hUZm5$#JO+E+)kcZuYE|6ysL9MQfgqP;1iePtx?pB-tDlo7e}<$MYJ!EXy5K@H}|-$ z2e`-C`@5eDdw&n))bw26?;Mo2`~9cy?-Z}^gI|7s_ieU!#(>Qx?@t~e@Am%wf0(a= z^)6p9tliJ%VwJ7s1Ki(hY}@egX-2!BUE$p4@?P$H_{7P&cCmN>);xRXo0U=}V-zsm z5JM9(bE+a>-kYu0ax<=i{vWmtn#d;!XR|jBS17E&FXEXqLm86%LYFVD*kfC7yE!Cj z%0ZJe$F2agzS`+Bc_%G@*u&X=-R}UabE|9(+F4WKdRy-nQ?MCQ!}pXLe^fW`=;_50 zNMnB!Y@Qpz)I~5$BbZeY%-RTMLjZ8 zx$-bvq3)jcEzBC!vYtm-%tm1B?pcV#Z!25EN*qprox|9>a+yL3iLY9)QAhP~A$|^; z&Bh+h^;=;0 z%92M;af)~;V*Bu2l3!xcPP~*%hfwDG(}@`326B9z}UT@(ACh`maMH1 zi+o);!#-6B8i%1ZKL(c_>r9COb4SRYfyF}n2w6a8O*NwX6UpJJjFT0h0*jYg>eCCom`U58Cr0FuPn`B$E|&b;%^N7ijZ;0F94H zR<*U%qBvHCavP1|^t_Tb7NY4-xNBP8d2V2VQ8>0=Vb zqh!EP{Eh%-vg6XDO{q%J?MGuOlpeoD^#+%8cRiAy0?hVMdmar8e|kJjCb_R_=3Kjf zLu)?=GFLUuI(`8Rf4+sk1Eww{=Uvi-xR`?`XEXaU zW$ZpGIJQg%4S&Ami-6gXZ(9P>s)4a{ByHhWfH~LoxFlL9hVF5{1xA0TU?qP5Or7gHsmHnzXZnaR@F3r0Os+Kl z`MZFzt7_&hQwTXX2jx5lnoTGTjthon1fn+tX&NxEfkng9m%I;-M9l zW$9|%&PyArD_iYlZ9`R~jhB{{wNx&#S9P@wj;S@(;?TI!8&O6Qrdd2>sExCvIjPc? zRJsWdr_~MVWaZNG%BECpV?(m0w4tJ|vZbhikI1zRLCTA38)k-4zReIlWm@u_*%N0@ zNuE7r>h$w*uLJJfNwbqPrq7wHuduN>*-}|u+nTCuF?j_Iu@#l=@M>LnfH{aq@At#i z9Jr{PlNvE9IlZwpc|lWU1Mh2dsOi8-GsY&9wT&3RQvp#UMqpB0+t^xFS6bcbq@Gis zQV1=x0~%}PoKyj1wbg1S6ZaEGjK*V3WplbRS(dKCUHv?m;0+t6Csk^(h_TjBt=Jwsu6U1e#@lqErOhigwfx*RQ|y0X1=AKRXx zprWy@AuQaY+LMkbA$&}+WsGMUbw;7yqLqR(#hVjE5l7yq7Q+C+j&9oS^B2O6AG@VQbDoG$etwfR6 zEhw(yDEPHR0b@F3h6~FRc(EK2OLw29BfX?xtMm9iL`J(q{x{JXbfzOg9H~zo7#wHo zUGZY%+zY^w=|W|(-#W|bGrkXz;cjc~y#om|S`Ziv)Rp$8X>N7EXrg63gAeMn`j!>y zey8{(B1J%V=#K!DWXDD;a1;ptx!r5;a0lbOB`;O+2!pP}1&NR#f#)-VJMymWi=wN? z1gS&~HyCh?Oy4WGj5Fsl0uJ>jkhZX^r7(;UcSBlGeIW0r9@5zl-vtKdQyc0~lP3!R z)Vy76j6>FdtK!o_sO*pyR3G5Ekhpp-GJwt-CQ!x{-1;t?p_p9j)14<#F%ApI~}S7yNU^X{T=>p@t4rw z{i(WF)8EzfBc7*|dju!F9sCu9oP0j$o&W6lc`)2$Ph~tduH(aOyFpYt%!-6KFGJQ* zfR1d~M`MTlS-E(k(!+CWOlbtMq^3poze*19fLR3A>|W85U>UF?dL@p6w1jVhM6_bq zY-BFXuAVLg#yaF};(u?F5neUk+V_KSgkmdY!yvDeja4BJqgSaiyd+_xQkhJ9Ps)LT zRr7@;V`eS=3Ji6q+oa<{Xs3Y|?X(zTUp@H_HHNL9(Lb$O^~V;ZC8|=M=>?_^K9=*y z3Q!MnGaMS=?4WlXCRW3+l6cE1Ay9r+I8|fvP-d62wwX%+P?EKYR$wQ10g57m)4W00 zZSG^CyAjlpCa2I$`|K37X=j8a%PzCq8XXDhNF&JTv!A5g68n$b(1?<=5ha7uQbN2c zS`CkZvqY!GdRcMQWD7O@aBg}qo-Y>*92w)dOBFA>jDp1lg;Z^0uZPaE*kYS@T}|>{ z#>(iLJ9Y5DB*~fxv?HSfC(b7HRt*`3*j}>B4~ee}tR)Wki+aj)Ou{3x9lbhlg4r^T zg$jisWLBSX^?>v7N6zY1TIijtb)r3i1Ua{g0f$0ajdQ>3PHe2~3*`t#42=$c6BkK4 z4eWwe+x>-|NAmsllb%I{LJ-CgYt~Mi9t}onN|z-ta=tGq_rnb)5dm~$BmA=HDz5De z^}2MCas-$oS$f{f!32AOggg~eex32(L|!`-5%OBfT@n;A(jg||R%O7I4Rf`pB|w2F z71#+)t{(%M%93U!mQKE|!BVP71Anb2gVR%`JHOF?Q;mwXdMN$3pWtz0l`Kz8Mt;JGm6I8aNP zbQgz+ee|7lDS1yB6bvMpp4(XZ^LQ*%dIfPc(BBGgN}x6?d?WlvOoBZLj&6;Xx6I+a z@Fbn)&>Ov&f~S}1YxYPB(-isqJQKGFgj$6Dky?KBYGR!{mUv3h-R2xbC; zG}t)s)?HK&fRYT|9)vs;t3;IEQIM8!btNJErahXu1F0->d9^1O`4}{krGXFzOF#$M zvvbr!&bMoo&SqJjt1<^jza^*=)B=nq6=Nh7=h(cU3K5%_JN)rx#%^8`HNA2U_aEk> zMIZxY932H>&JUB@dv*H>)1Q7&sADi&9~@?snrDRl^SA}`vhzx=BBER(V8EXQ@1`z(L3Lm!&2&3er_=dP?5tIH-d zwgYl|V$=b*H?#w4H__h5STV?6g#F7Cd5KZet&03$%<|sFf{tM0RCcs~C}6VR*vm9V(sYo+RH;;PeXV|Q#T*7^e4(p$+XytTdU3S4;DSFZfFLNWr& z$AaC5>pEDUv(OQ&D;}z#4vn>yKR(t7&rS8L64Xf>n2Rri&FTjVL-+c{iz#lg5hQR^r{x!9Ip0L|4CW2*m9)_@C zHJ8H)*&kUF=aDCEX~-e1KjY1S2h=uezi7<^jZL>&S0<*)cdPbZ2)9VytJWFRT|wIn zY91m~0aoS0hRZ-C4U~KJgl?$7>L&;|DY+ZKp+`-Wkx4XHMM*A5qneRmLmsY-^2Jf9 zXOj3MOUHYkP)(CWE_T&c!;jdc>-r>#myk5i+r9FugXF}TEz#{GbwICF2uUV@<1H$E zBniwjlnO*@aw^bH6ahO4mDqUTk=1W-4-p8hFO_R~k6iPbSltO63V0YInTiJ= zD=LxN6QQH0S#xQgPt_$OKILCqAX1?n(y@k$4G%IR2Ym}|>pgVklLs5S^ESF7F1{fCAK8{+BUSyHJK-|$Y$12s_$k)q&a4DPQ;b@e5>S< zY6h~2VILUBU0XKUOtwVf@A1rykD9-16n@%L&G9Y$Z-X=3^}0v&Eu?u=tkAiKhR}QY zYrT9;gooxQYw7hq+o4^X%JzFboZEI%_p0swhw#$~oi*vOMSN0}xl+ z62w!A3ww}084gZI7ld)XRrGVt>593`{YNu!g-7DUO?uBAknnq*L_qz>@Xa8cMa7@R>wwh#^_03ZQf1jY`J1`_BFbnN z57N55QgU-uHdiwL@w+D}nz?S;a)LWM?(=lQ(l|LEkB8%T`nPMHh&4GaY4rD70w7)8 z?zcrY!!nb^k>)h2qi8B)@K+(2`NzW%+?RV?AZ*j}x?&dc+gmN9uBgMm+d!Xdn)@ zm(tv9H{8J+gD?->@zPA{&#bsk^CBUg{0-_i&5ExZ-2`i%*sfTAELW&>qn=n=5{BRZ z9J2k3wu8k1VU4;_q4f7ailXU4rn21?bP-LwkhQEsg8{wICo@>=0Bx1_szCFd0uK`G z=w|qG0568v0n-gEKFrP1HNGQ2?Po#_C8iHlNsn3-^EEMBZYgx;=6;o9wtuCoL&j5C zEg#nTBYsU+rC^LYj~TWnurdA3|0NphE}@oFXaeqb3G6CcWknWvp@3+Yv$^Jaz1@0+ z#1LOG-Pn;Ox(dofieu}G1Jx-7HX>-qg$YsnV3KA!!wN!fOIRkUA$|F-w&=!Hz~B(V z*C;6tys+O45y(3IzQyM#hll(H9n9A1G27>K;mul2VnmnkQsj#R%85uLhO^}c(D)(} zBbH)>eWE*qs(iNHXY*{vm)Q*YTG~+6ajTrLg>3VbZ0qowyPqa!+D?$;C|+G3jNpYml79fy2hocBT_UzYE@wI^LBn%W&h^> zb01kjLu%tVMa@CjxbQpkQpnBD$~sc33V&z#_EKnqG2z*B3PyOsC2@MlU3Sn?x0wC? z4)NiE{13wA)0rBu+F6@|OpnrGq}@pxEz# z$y6*+bb54Lo5g3nt%swK>z$#Nn<^ncaiYSm4#hs)@)*tnLO>MHp24C)UDGQgeAvne zV5?9V4AC_akW1XPPQnIVuCX}4RY|S3I+Yjm8Qz?eor0;w0Y@WpTt((yWJBQSBWg?x zQlZ%Gb*=P7(P_(kc5{hP*AsBx& zgR1I40tqZx9!U#EnQV|~gwi9%25})XE)%0*5Nk}0bR_9-k=!(Lwq5bI%L{ihztQ$n z2qCG-8V>h&_*=*cQ?v_J=0MKt(cT5sdc4fOErIE9#sIS$`$Ow_yxSU@ zFj{R>=%wO5xEyF5(WCMhmy1(~q3t>ZqP{&pW2e8*x9E7kEMC+jZT(>ydeexoFI}|T zo*qB3hwWAi0fCiRj*0Ukokmn;8h5nj LH({Lo1N!!VfdrSK diff --git a/orz_0_6_4.cpp b/orz_0_6_4.cpp deleted file mode 100644 index c341a71..0000000 --- a/orz_0_6_4.cpp +++ /dev/null @@ -1,657 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#define state_up 0 -#define state_down 1 -#define state_die -1 -#define ID_0 0 -#define ID_1 1 -#define ID_2 2 -#define ID_3 3 -#define mode_start 0 -#define mode_right 1 -#define mode_up 2 -#define mode_left 3 -#define mode_down 4 -#define mode_halt 5 -#define mode_idle 6 -#define mode_draw 7 -using namespace std; -int map[15][15]; -int minimap[4][15][15]; -int now[4],tot[4],area[4]; -int m,n,j,k; -int x[4],y[4],state[4],trappedleft[4],scoredecline[4]; -int now_id; -int edge_color[15][15][15][15]; -int timeleft[200]; -int mode=mode_start; -unsigned int relative_distance[4][15][15][15][15]; -ofstream fout1(".\\output1.txt"); -ofstream fout2(".\\output2.txt"); -ofstream fout3(".\\output3.txt"); -ofstream fout4(".\\output4.txt"); -ofstream fout5(".\\output5.txt"); -class dot -{ -public: - int x; - int y; -}; -class player -{ -public: - dot* position; - int ID; - int score; - int state; - int trappedleft; - int num; - dot* road[300]; - player(int ID,int x,int y) - { - position=new dot; - position->x=x; - position->y=y; - this->ID=ID; - score=4-ID; - state=state_up; - trappedleft=0; - num=0; - } - void insert(int x,int y) - { - num++; - road[num]=new dot; - road[num]->x=x; - road[num]->y=y; - } - void cut() - { - num--; - } - void clear() - { - num=0; - } - void change(int x,int y) - { - position->x=x; - position->y=y; - } - void down() - { - this->state=state_down; - } - void up() - { - this->state=state_up; - } - void die() - { - this->state=state_die; - } - void paint() - { - int i,j,k,s=1; - for(i=1;i<=num-1;i++) - if(road[i]->x==road[num]->x&&road[i]->y==road[num]->y) s=i; - fout5<<"---------ROAD----------"<x<<" "<y<x==road[k]->x&&road[k-1]->y==road[k]->y) continue; - if(road[k-1]->x==road[k]->x) - { - if(road[k-1]->yy) - { - if(j==road[k]->y&&i>road[k]->x) top=true; - if(j==road[k]->y&&i<=road[k]->x) bottom=true; - } - if(road[k-1]->y>road[k]->y) - { - if(j==road[k-1]->y&&i>road[k]->x) top=true; - if(j==road[k-1]->y&&i<=road[k]->x) bottom=true; - } - continue; - } - if(road[k-1]->y==road[k]->y) - { - if(road[k-1]->xx) - { - if(i==road[k]->x&&j>road[k]->y) left=true; - if(i==road[k]->x&&j<=road[k]->y) right=true; - } - if(road[k-1]->x>road[k]->x) - { - if(i==road[k-1]->x&&j>road[k]->y) left=true; - if(i==road[k-1]->x&&j<=road[k]->y) right=true; - } - } - } - if(top&&bottom&&left&&right) - { - if(-1==map[i][j]) - { - minimap[ID][i][j]=1; - } - } - } - num=0; - } -}; - -class enclosure -{ -public: - /* - player* player0; - player* player1; - player* player2; - player* player3; - player* players[4]; - */ - enclosure(int x0,int y0,int x1,int y1,int x2,int y2,int x3,int y3) - { - player0=new player(ID_0,x0,y0); - player1=new player(ID_1,x1,y1); - player2=new player(ID_2,x2,y2); - player3=new player(ID_3,x3,y3); - } - enclosure(){} - void pass(int ID,int x,int y,int state) - { - if(state_die==state) - { - if(ID_0==ID) - { - player0->die(); - if(player0->road[1]->x==x&&player0->road[1]->y==y) - { - player0->insert(x,y); - player0->paint(); - player0->clear(); - } - } - if(ID_1==ID) - { - player1->die(); - if(player1->road[1]->x==x&&player1->road[1]->y==y) - { - player1->insert(x,y); - player1->paint(); - player1->clear(); - } - } - if(ID_2==ID) - { - player2->die(); - if(player2->road[1]->x==x&&player2->road[1]->y==y) - { - player2->insert(x,y); - player2->paint(); - player2->clear(); - } - } - if(ID_3==ID) - { - player3->die(); - if(player3->road[1]->x==x&&player3->road[1]->y==y) - { - player3->insert(x,y); - player3->paint(); - player3->clear(); - } - } - } - if(state_up==state) - { - if(ID_0==ID) - { - if(state_down==player0->state) player0->insert(x,y); - player0->paint(); - player0->up(); - player0->clear(); - player0->insert(x,y); - } - if(ID_1==ID) - { - if(state_down==player1->state) player1->insert(x,y); - player1->paint(); - player1->up(); - player1->clear(); - player1->insert(x,y); - } - if(ID_2==ID) - { - if(state_down==player2->state) player2->insert(x,y); - player2->paint(); - player2->up(); - player2->clear(); - player2->insert(x,y); - } - if(ID_3==ID) - { - if(state_down==player3->state) player3->insert(x,y); - player3->paint(); - player3->up(); - player3->clear(); - player3->insert(x,y); - } - } - if(state_down==state) - { - if(ID_0==ID) - { - player0->down(); - player0->insert(x,y); - } - if(ID_1==ID) - { - player1->down(); - player1->insert(x,y); - } - if(ID_2==ID) - { - player2->down(); - player2->insert(x,y); - } - if(ID_3==ID) - { - player3->down(); - player3->insert(x,y); - } - } - if(ID_0==ID) player0->change(x,y); - if(ID_1==ID) player1->change(x,y); - if(ID_2==ID) player2->change(x,y); - if(ID_3==ID) player3->change(x,y); - } - void make() - { - int i,j,k; - for(i=0;i<=3;i++) - for(j=1;j<=10;j++) - for(k=1;k<=10;k++) - { - if(1==minimap[i][j][k]) tot[i]++; - } - - for(j=1;j<=10;j++) - for(k=1;k<=10;k++) - { - int mini=10000000; - int minID=-1; - for(int s=0;s<=3;s++) - if(tot[s]score=player0->score+area[0]*area[0]*10; - player1->score=player1->score+area[1]*area[1]*10; - player2->score=player2->score+area[2]*area[2]*10; - player3->score=player3->score+area[3]*area[3]*10; - for(i=0;i<=3;i++) - if(0!=area[i]) now[i]++; - memset(minimap,0,sizeof(minimap)); - memset(area,0,sizeof(area)); - memset(tot,0,sizeof(tot)); - } -}; -dot bind[200]; -enclosure* game; - -void generate_output(int diff_x,int diff_y,int other_action) -{ - cout<<"[ACTION] "; - if(diff_x==0&&diff_y==0) cout<<"s "; - else if(diff_x==0&&diff_y==1) cout<<"d "; - else if(diff_x==0&&diff_y==-1) cout<<"u "; - else if(diff_x==1&&diff_y==0) cout<<"r "; - else if(diff_x==-1&&diff_y==0) cout<<"l "; - cout<0) - { - //Upward Road - if(j==0||j==10||map[i][j]!=map[i][j+1]||map[i][j]==-1||map[i][j+1]==-1) edge_color[i][j][i-1][j]=-1; - else edge_color[i][j][i-1][j]=map[i][j]; - } - if(i<10) - { - //Downward Road - if(j==0||j==10||map[i+1][j]!=map[i+1][j+1]||map[i+1][j]==-1||map[i+1][j+1]==-1) edge_color[i][j][i+1][j]=-1; - else edge_color[i][j][i+1][j]=map[i+1][j+1]; - } - if(j>0) - { - //Leftward Road - if(i==0||i==10||map[i][j]!=map[i+1][j]||map[i][j]==-1||map[i+1][j]==-1) edge_color[i][j][i][j-1]=-1; - else edge_color[i][j][i][j-1]=map[i+1][j]; - } - if(j<10) - { - //Rightward Road - if(i==0||i==10||map[i][j+1]!=map[i+1][j+1]||map[i][j+1]==-1||map[i+1][j+1]==-1) edge_color[i][j][i][j+1]=-1; - else edge_color[i][j][i][j+1]=map[i][j+1]; - } - } - } -} -int update_distance(dot* start_point,int ID) -{ - //Todo: - //1. Get unpassable lines - //2. Do a bfs - //Note: - //1. An edge label 400 means specially defined unpassable lines - //2. This update process is only valid for a certain ID, i.e. the defined player - unsigned int tmp_distance[15][15]; - bool in_queue[15][15]; - memset(tmp_distance,0xff,sizeof(tmp_distance)); - memset(in_queue,0,sizeof(in_queue)); - queue* q=new queue; - q->push(start_point); - tmp_distance[start_point->x][start_point->y]=0; - while ((!q->empty())) - { - dot* tmp=q->front(); - q->pop(); - in_queue[tmp->x][tmp->y]=false; - if((tmp->x>0)&&(edge_color[tmp->x][tmp->y][tmp->x-1][tmp->y]==-1)&&(tmp_distance[tmp->x-1][tmp->y]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x-1][tmp->y]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x-1; - tmp2->y=tmp->y; - if(!in_queue[tmp->x-1][tmp->y]) - { - q->push(tmp2); - in_queue[tmp->x-1][tmp->y]=true; - } - } - if((tmp->x<10)&&(edge_color[tmp->x][tmp->y][tmp->x+1][tmp->y]==-1)&&(tmp_distance[tmp->x+1][tmp->y]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x+1][tmp->y]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x+1; - tmp2->y=tmp->y; - if(!in_queue[tmp->x+1][tmp->y]) - { - q->push(tmp2); - in_queue[tmp->x+1][tmp->y]=true; - } - } - if((tmp->y>0)&&(edge_color[tmp->x][tmp->y][tmp->x][tmp->y-1]==-1)&&(tmp_distance[tmp->x][tmp->y-1]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x][tmp->y-1]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x; - tmp2->y=tmp->y-1; - if(!in_queue[tmp->x][tmp->y-1]) - { - q->push(tmp2); - in_queue[tmp->x][tmp->y-1]=true; - } - } - if((tmp->y<10)&&(edge_color[tmp->x][tmp->y][tmp->x][tmp->y+1]==-1)&&(tmp_distance[tmp->x][tmp->y+1]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x][tmp->y+1]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x; - tmp2->y=tmp->y+1; - if(!in_queue[tmp->x][tmp->y+1]) - { - q->push(tmp2); - in_queue[tmp->x][tmp->y+1]=true; - } - } - } - for(int i=0;i<=10;i++) for(int j=0;j<=10;j++) relative_distance[ID][start_point->x][start_point->y][i][j]=tmp_distance[i][j]; - return -1; -} -int calculate_area(dot** x,int dot_num) -{ - int i,j,k,s=1; - int ans=0; - for(i=1;i<=dot_num-1;i++) - if(x[i]->x==x[dot_num]->x&&x[i]->y==x[dot_num]->y) s=i; - for(i=1;i<=10;i++) - for(j=1;j<=10;j++) - { - bool left=false; - bool right=false; - bool top=false; - bool bottom=false; - for(k=s+1;k<=dot_num;k++) - { - if(x[k-1]->x==x[k]->x&&x[k-1]->y==x[k]->y) continue; - if(x[k-1]->x==x[k]->x) - { - if(x[k-1]->yy) - { - if(j==x[k]->y&&i>x[k]->x) top=true; - if(j==x[k]->y&&i<=x[k]->x) bottom=true; - } - if(x[k-1]->y>x[k]->y) - { - if(j==x[k-1]->y&&i>x[k]->x) top=true; - if(j==x[k-1]->y&&i<=x[k]->x) bottom=true; - } - continue; - } - if(x[k-1]->y==x[k]->y) - { - if(x[k-1]->xx) - { - if(i==x[k]->x&&j>x[k]->y) left=true; - if(i==x[k]->x&&j<=x[k]->y) right=true; - } - if(x[k-1]->x>x[k]->x) - { - if(i==x[k-1]->x&&j>x[k]->y) left=true; - if(i==x[k-1]->x&&j<=x[k]->y) right=true; - } - } - } - if(left&&right&&top&&bottom&&-1==map[i][j]) ans++; - } - return ans; -} -int calculate_maximum_safe_enclosure(int now_id) -{ - -} -void brain() -{ - update_edge_status(); - int original_edge_color[15][15][15][15]; - memcpy(original_edge_color,edge_color,sizeof(original_edge_color)); - if(game->player0->state=state_down) - { - memcpy(edge_color,original_edge_color,sizeof(edge_color)); - for(int i=1;iplayer0->num;i++) - { - dot* p1=game->player0->road[i]; - dot* p2=game->player0->road[i+1]; - edge_color[p1->x][p1->y][p2->x][p2->y]=edge_color[p2->x][p2->y][p1->x][p1->y]=400; - } - } - - update_distance(game->player1->position,1); - update_distance(game->player2->position,2); - update_distance(game->player3->position,3); - int now_x,now_y; - switch (now_id) - { - case 0: - now_x=game->player0->position->x; - now_y=game->player0->position->y; - break; - case 1: - now_x=game->player1->position->x; - now_y=game->player1->position->y; - break; - case 2: - now_x=game->player2->position->x; - now_y=game->player2->position->y; - break; - case 3: - now_x=game->player3->position->x; - now_y=game->player3->position->y; - break; - default: - break; - } - //Finite State Machine - /*Whole closure - if(mode==mode_start) - { - mode=mode_right; - } - else if(mode==mode_right) - { - if(now_x==10&&now_y==10) mode=mode_up; - } - else if(mode==mode_up) - { - if(now_x==0&&now_y==10) mode=mode_left; - } - else if(mode==mode_left) - { - if(now_x==0&&now_y==0) mode=mode_down; - } - else if(mode==mode_down) - { - if(now_x==10&&now_y==0) mode=mode_halt; - } - //Output Area - if(mode==mode_right&&now_y==0) - { - generate_output(0,1,1); - } - else if(mode==mode_right) - { - generate_output(0,1,0); - } - else if(mode==mode_up) - { - generate_output(-1,0,0); - } - else if(mode==mode_left) - { - generate_output(0,-1,0); - } - else if(mode==mode_down) - { - generate_output(1,0,0); - } - else if(mode==mode_halt) - { - generate_output(0,0,0); - } - */ - //Debug Output - fout1<<"---MAP---"<>label; - cin>>now_id; - cout<<"[POS] 10 0"<>label; - for(int i=0;i<=3;i++) - { - cin>>x[i]>>y[i]>>state[i]>>trappedleft[i]>>scoredecline[i]; - } - if(!started) - { - started=true; - game=new enclosure(x[0],y[0],x[1],y[1],x[2],y[2],x[3],y[3]); - } - game->pass(ID_0,x[0],y[0],state[0]); - game->pass(ID_1,x[1],y[1],state[1]); - game->pass(ID_2,x[2],y[2],state[2]); - game->pass(ID_3,x[3],y[3],state[3]); - game->make(); - int total; - cin>>total; - for(int i=1;i<=total;i++) - { - cin>>bind[i].x>>bind[i].y>>timeleft[i]; - } - brain(); - } -} diff --git a/orz_0_6_6.cpp b/orz_0_6_6.cpp deleted file mode 100644 index cea99e1..0000000 --- a/orz_0_6_6.cpp +++ /dev/null @@ -1,558 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#define state_up 0 -#define state_down 1 -#define state_die -1 -#define ID_0 0 -#define ID_1 1 -#define ID_2 2 -#define ID_3 3 -#define mode_start 0 -#define mode_right 1 -#define mode_up 2 -#define mode_left 3 -#define mode_down 4 -#define mode_halt 5 -#define mode_idle 6 -#define mode_draw 7 -using namespace std; -int map[15][15]; -int minimap[4][15][15]; -int now[4],tot[4],area[4]; -int m,n,j,k; -int x[4],y[4],state[4],trappedleft[4],scoredecline[4]; -int now_id; -int edge_color[15][15][15][15]; -int timeleft[200]; -int mode=mode_start; -unsigned int relative_distance[4][15][15][15][15]; -ofstream fout1(".\\output1.txt"); -ofstream fout2(".\\output2.txt"); -ofstream fout3(".\\output3.txt"); -ofstream fout4(".\\output4.txt"); -ofstream fout5(".\\output5.txt"); -class dot -{ -public: - int x; - int y; -}; -class player -{ -public: - dot* position; - int ID; - int score; - int state; - int trappedleft; - int num; - dot* road[300]; - player(int ID,int x,int y) - { - position=new dot; - position->x=x; - position->y=y; - this->ID=ID; - score=4-ID; - state=state_up; - trappedleft=0; - num=0; - } - void insert(int x,int y) - { - num++; - road[num]=new dot; - road[num]->x=x; - road[num]->y=y; - } - void cut() - { - num--; - } - void clear() - { - num=0; - } - void change(int x,int y) - { - position->x=x; - position->y=y; - } - void down() - { - this->state=state_down; - } - void up() - { - this->state=state_up; - } - void die() - { - this->state=state_die; - } - void paint() - { - int i,j,k,s=1; - for(i=1;i<=num-1;i++) - if(road[i]->x==road[num]->x&&road[i]->y==road[num]->y) s=i; - fout5<<"---------ROAD----------"<x<<" "<y<x==road[k]->x&&road[k-1]->y==road[k]->y) continue; - if(road[k-1]->x==road[k]->x) - { - if(road[k-1]->yy) - { - if(j==road[k]->y&&i>road[k]->x) top=true; - if(j==road[k]->y&&i<=road[k]->x) bottom=true; - } - if(road[k-1]->y>road[k]->y) - { - if(j==road[k-1]->y&&i>road[k]->x) top=true; - if(j==road[k-1]->y&&i<=road[k]->x) bottom=true; - } - continue; - } - if(road[k-1]->y==road[k]->y) - { - if(road[k-1]->xx) - { - if(i==road[k]->x&&j>road[k]->y) left=true; - if(i==road[k]->x&&j<=road[k]->y) right=true; - } - if(road[k-1]->x>road[k]->x) - { - if(i==road[k-1]->x&&j>road[k]->y) left=true; - if(i==road[k-1]->x&&j<=road[k]->y) right=true; - } - } - } - if(top&&bottom&&left&&right) - { - if(-1==map[i][j]) - { - minimap[ID][i][j]=1; - } - } - } - num=0; - } -}; - -class enclosure -{ -public: - player* players[4]; - enclosure(int* x,int* y) - { - for(int i=0;i<4;i++) players[i]=new player(i,x[i],y[i]); - } - enclosure(){} - void pass(int ID,int x,int y,int state) - { - if(state_die==state) - { - players[ID]->die(); - //Needs revision - players[ID]->insert(x,y); - players[ID]->paint(); - players[ID]->clear(); - } - if(state_up==state) - { - if(state_down==players[ID]->state) players[ID]->insert(x,y); - players[ID]->paint(); - players[ID]->up(); - players[ID]->clear(); - players[ID]->insert(x,y); - } - if(state_down==state) - { - players[ID]->down(); - players[ID]->insert(x,y); - } - players[ID]->change(x,y); - } - void make() - { - for(int i=0;i<=3;i++) - for(int j=1;j<=10;j++) - for(int k=1;k<=10;k++) - { - if(1==minimap[i][j][k]) tot[i]++; - } - - for(int j=1;j<=10;j++) - for(int k=1;k<=10;k++) - { - int mini=10000000; - int minID=-1; - for(int s=0;s<=3;s++) - if(tot[s]score+=area[i]*area[i]*10; - for(int i=0;i<=3;i++) if(0!=area[i]) now[i]++; - memset(minimap,0,sizeof(minimap)); - memset(area,0,sizeof(area)); - memset(tot,0,sizeof(tot)); - } -}; -dot bind[200]; -enclosure* game; - -void generate_output(int diff_x,int diff_y,int other_action) -{ - cout<<"[ACTION] "; - if(diff_x==0&&diff_y==0) cout<<"s "; - else if(diff_x==0&&diff_y==1) cout<<"d "; - else if(diff_x==0&&diff_y==-1) cout<<"u "; - else if(diff_x==1&&diff_y==0) cout<<"r "; - else if(diff_x==-1&&diff_y==0) cout<<"l "; - cout<0) - { - //Upward Road - if(j==0||j==10||map[i][j]!=map[i][j+1]||map[i][j]==-1||map[i][j+1]==-1) edge_color[i][j][i-1][j]=-1; - else edge_color[i][j][i-1][j]=map[i][j]; - } - if(i<10) - { - //Downward Road - if(j==0||j==10||map[i+1][j]!=map[i+1][j+1]||map[i+1][j]==-1||map[i+1][j+1]==-1) edge_color[i][j][i+1][j]=-1; - else edge_color[i][j][i+1][j]=map[i+1][j+1]; - } - if(j>0) - { - //Leftward Road - if(i==0||i==10||map[i][j]!=map[i+1][j]||map[i][j]==-1||map[i+1][j]==-1) edge_color[i][j][i][j-1]=-1; - else edge_color[i][j][i][j-1]=map[i+1][j]; - } - if(j<10) - { - //Rightward Road - if(i==0||i==10||map[i][j+1]!=map[i+1][j+1]||map[i][j+1]==-1||map[i+1][j+1]==-1) edge_color[i][j][i][j+1]=-1; - else edge_color[i][j][i][j+1]=map[i][j+1]; - } - } - } -} -int update_distance(dot* start_point,int ID) -{ - //Todo: - //1. Get unpassable lines - //2. Do a bfs - //Note: - //1. An edge label 400 means specially defined unpassable lines - //2. This update process is only valid for a certain ID, i.e. the defined player - unsigned int tmp_distance[15][15]; - bool in_queue[15][15]; - memset(tmp_distance,0xff,sizeof(tmp_distance)); - memset(in_queue,0,sizeof(in_queue)); - queue* q=new queue; - q->push(start_point); - tmp_distance[start_point->x][start_point->y]=0; - while ((!q->empty())) - { - dot* tmp=q->front(); - q->pop(); - in_queue[tmp->x][tmp->y]=false; - if((tmp->x>0)&&(edge_color[tmp->x][tmp->y][tmp->x-1][tmp->y]==-1)&&(tmp_distance[tmp->x-1][tmp->y]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x-1][tmp->y]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x-1; - tmp2->y=tmp->y; - if(!in_queue[tmp->x-1][tmp->y]) - { - q->push(tmp2); - in_queue[tmp->x-1][tmp->y]=true; - } - } - if((tmp->x<10)&&(edge_color[tmp->x][tmp->y][tmp->x+1][tmp->y]==-1)&&(tmp_distance[tmp->x+1][tmp->y]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x+1][tmp->y]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x+1; - tmp2->y=tmp->y; - if(!in_queue[tmp->x+1][tmp->y]) - { - q->push(tmp2); - in_queue[tmp->x+1][tmp->y]=true; - } - } - if((tmp->y>0)&&(edge_color[tmp->x][tmp->y][tmp->x][tmp->y-1]==-1)&&(tmp_distance[tmp->x][tmp->y-1]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x][tmp->y-1]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x; - tmp2->y=tmp->y-1; - if(!in_queue[tmp->x][tmp->y-1]) - { - q->push(tmp2); - in_queue[tmp->x][tmp->y-1]=true; - } - } - if((tmp->y<10)&&(edge_color[tmp->x][tmp->y][tmp->x][tmp->y+1]==-1)&&(tmp_distance[tmp->x][tmp->y+1]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x][tmp->y+1]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x; - tmp2->y=tmp->y+1; - if(!in_queue[tmp->x][tmp->y+1]) - { - q->push(tmp2); - in_queue[tmp->x][tmp->y+1]=true; - } - } - } - for(int i=0;i<=10;i++) for(int j=0;j<=10;j++) relative_distance[ID][start_point->x][start_point->y][i][j]=tmp_distance[i][j]; - return -1; -} -int calculate_area(dot** x,int dot_num) -{ - int i,j,k,s=1; - int ans=0; - for(i=1;i<=dot_num-1;i++) - if(x[i]->x==x[dot_num]->x&&x[i]->y==x[dot_num]->y) s=i; - for(i=1;i<=10;i++) - for(j=1;j<=10;j++) - { - bool left=false; - bool right=false; - bool top=false; - bool bottom=false; - for(k=s+1;k<=dot_num;k++) - { - if(x[k-1]->x==x[k]->x&&x[k-1]->y==x[k]->y) continue; - if(x[k-1]->x==x[k]->x) - { - if(x[k-1]->yy) - { - if(j==x[k]->y&&i>x[k]->x) top=true; - if(j==x[k]->y&&i<=x[k]->x) bottom=true; - } - if(x[k-1]->y>x[k]->y) - { - if(j==x[k-1]->y&&i>x[k]->x) top=true; - if(j==x[k-1]->y&&i<=x[k]->x) bottom=true; - } - continue; - } - if(x[k-1]->y==x[k]->y) - { - if(x[k-1]->xx) - { - if(i==x[k]->x&&j>x[k]->y) left=true; - if(i==x[k]->x&&j<=x[k]->y) right=true; - } - if(x[k-1]->x>x[k]->x) - { - if(i==x[k-1]->x&&j>x[k]->y) left=true; - if(i==x[k-1]->x&&j<=x[k]->y) right=true; - } - } - } - if(left&&right&&top&&bottom&&-1==map[i][j]) ans++; - } - return ans; -} -int calculate_maximum_safe_enclosure(int now_id,int road_id) -{ - //Todo: - //1. Fetch the road from road_id to -} -void brain() -{ - update_edge_status(); - int original_edge_color[15][15][15][15]; - memcpy(original_edge_color,edge_color,sizeof(original_edge_color)); - for(int i=0;i<4;i++) - { - memcpy(edge_color,original_edge_color,sizeof(edge_color)); - if(game->players[i]->state==state_down) - { - for(int j=1;jplayers[i]->num;j++) - { - dot* p1=new dot(); - dot* p2=new dot(); - p1=game->players[i]->road[j]; - p2=game->players[i]->road[j+1]; - edge_color[p1->x][p1->y][p2->x][p2->y]=edge_color[p2->x][p2->y][p1->x][p1->y]=400; - } - } - else if(game->players[i]->state==state_up) - { - //Downward Road - for(int j=0;j<10;j++) for(int k=0;k<=10;k++) if((edge_color[j][k][j+1][k]/100)==i) edge_color[j][k][j+1][k]=-1; - //Upward Road - for(int j=1;j<=10;j++) for(int k=0;k<=10;k++) if((edge_color[j][k][j-1][k]/100)==i) edge_color[j][k][j-1][k]=-1; - //Rightward Road - for(int j=0;j<=10;j++) for(int k=0;k<10;k++) if((edge_color[j][k][j][k+1]/100)==i) edge_color[j][k][j][k+1]=-1; - //Leftward Road - for(int j=0;j<=10;j++) for(int k=1;k<=10;k++) if((edge_color[j][k][j][k-1]/100)==i) edge_color[j][k][j][k-1]=-1; - } - update_distance(game->players[i]->position,i); - } - memcpy(edge_color,original_edge_color,sizeof(edge_color)); - int now_x[4],now_y[4]; - for(int i=0;i<4;i++) - { - now_x[i]=game->players[i]->position->x; - now_y[i]=game->players[i]->position->y; - } - //Finite State Machine - if(mode==mode_start) - { - mode=mode_right; - } - else if(mode==mode_right) - { - if(now_x[now_id]==10&&now_y[now_id]==10) mode=mode_up; - } - else if(mode==mode_up) - { - if(now_x[now_id]==0&&now_y[now_id]==10) mode=mode_left; - } - else if(mode==mode_left) - { - if(now_x[now_id]==0&&now_y[now_id]==0) mode=mode_down; - } - else if(mode==mode_down) - { - if(now_x[now_id]==10&&now_y[now_id]==0) mode=mode_halt; - } - //Output Area - if(mode==mode_right&&now_y[now_id]==0) - { - generate_output(0,1,1); - } - else if(mode==mode_right) - { - generate_output(0,1,0); - } - else if(mode==mode_up) - { - generate_output(-1,0,0); - } - else if(mode==mode_left) - { - generate_output(0,-1,0); - } - else if(mode==mode_down) - { - generate_output(1,0,0); - } - else if(mode==mode_halt) - { - generate_output(0,0,0); - } - //Debug Output - fout1<<"---MAP---"<>label; - cin>>now_id; - cout<<"[POS] 10 0"<>label; - for(int i=0;i<=3;i++) - { - cin>>x[i]>>y[i]>>state[i]>>trappedleft[i]>>scoredecline[i]; - } - if(!started) - { - started=true; - //game=new enclosure(x[0],y[0],x[1],y[1],x[2],y[2],x[3],y[3]); - game=new enclosure(x,y); - } - game->pass(ID_0,x[0],y[0],state[0]); - game->pass(ID_1,x[1],y[1],state[1]); - game->pass(ID_2,x[2],y[2],state[2]); - game->pass(ID_3,x[3],y[3],state[3]); - game->make(); - int total; - cin>>total; - for(int i=1;i<=total;i++) - { - cin>>bind[i].x>>bind[i].y>>timeleft[i]; - } - brain(); - } -} diff --git a/orz_0_6_8.cpp b/orz_0_6_8.cpp deleted file mode 100644 index e7724ff..0000000 --- a/orz_0_6_8.cpp +++ /dev/null @@ -1,801 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#define state_up 0 -#define state_down 1 -#define state_die -1 -#define mode_start 0 -#define mode_right 1 -#define mode_up 2 -#define mode_left 3 -#define mode_down 4 -#define mode_halt 5 -#define mode_idle 6 -#define mode_draw 7 -using namespace std; -int map[15][15]; -int minimap[4][15][15]; -int now[4],tot[4],area[4]; -int m,n,bind_total; -int x[4],y[4],state[4],trappedleft[4],scoredecline[4]; -int now_id; -int edge_color[15][15][15][15]; -int timeleft[200]; -int mode=mode_start; -unsigned int relative_distance[4][15][15][15][15]; -ofstream fout1(".\\output1.txt"); -ofstream fout2(".\\output2.txt"); -ofstream fout3(".\\output3.txt"); -ofstream fout4(".\\output4.txt"); -ofstream fout5(".\\output5.txt"); -ofstream fout6(".\\output6.txt"); -class dot -{ - public: - int x; - int y; -}; -class exdot -{ - public: - int x; - int y; - int meta[10]; -}; -class player -{ - public: - dot* position; - int ID; - int score; - int state; - int trappedleft; - int num; - dot* road[300]; - player(int ID,int x,int y) - { - position=new dot; - position->x=x; - position->y=y; - this->ID=ID; - score=4-ID; - state=state_up; - trappedleft=0; - num=0; - } - void insert(int x,int y) - { - num++; - road[num]=new dot; - road[num]->x=x; - road[num]->y=y; - } - void cut() - { - num--; - } - void clear() - { - num=0; - } - void change(int x,int y) - { - position->x=x; - position->y=y; - } - void down() - { - this->state=state_down; - } - void up() - { - this->state=state_up; - } - void die() - { - this->state=state_die; - } - void paint() - { - int i,j,k,s=1; - for(i=1;i<=num-1;i++) - if(road[i]->x==road[num]->x&&road[i]->y==road[num]->y) s=i; - fout5<<"---------ROAD----------"<x<<" "<y<x==road[k]->x&&road[k-1]->y==road[k]->y) continue; - if(road[k-1]->x==road[k]->x) - { - if(road[k-1]->yy) - { - if(j==road[k]->y&&i>road[k]->x) top=true; - if(j==road[k]->y&&i<=road[k]->x) bottom=true; - } - if(road[k-1]->y>road[k]->y) - { - if(j==road[k-1]->y&&i>road[k]->x) top=true; - if(j==road[k-1]->y&&i<=road[k]->x) bottom=true; - } - continue; - } - if(road[k-1]->y==road[k]->y) - { - if(road[k-1]->xx) - { - if(i==road[k]->x&&j>road[k]->y) left=true; - if(i==road[k]->x&&j<=road[k]->y) right=true; - } - if(road[k-1]->x>road[k]->x) - { - if(i==road[k-1]->x&&j>road[k]->y) left=true; - if(i==road[k-1]->x&&j<=road[k]->y) right=true; - } - } - } - if(top&&bottom&&left&&right) - { - if(-1==map[i][j]) - { - minimap[ID][i][j]=1; - } - } - } - num=0; - } -}; - -class enclosure -{ - public: - player* players[4]; - enclosure(int* x,int* y) - { - for(int i=0;i<4;i++) players[i]=new player(i,x[i],y[i]); - } - enclosure(){} - void pass(int ID,int x,int y,int state) - { - if(state_die==state) - { - players[ID]->die(); - players[ID]->insert(x,y); - players[ID]->paint(); - players[ID]->clear(); - } - if(state_up==state) - { - if(state_down==players[ID]->state) players[ID]->insert(x,y); - players[ID]->paint(); - players[ID]->up(); - players[ID]->clear(); - players[ID]->insert(x,y); - } - if(state_down==state) - { - players[ID]->down(); - players[ID]->insert(x,y); - } - players[ID]->change(x,y); - } - void make() - { - for(int i=0;i<=3;i++) - for(int j=1;j<=10;j++) - for(int k=1;k<=10;k++) - { - if(1==minimap[i][j][k]) tot[i]++; - } - - for(int j=1;j<=10;j++) - for(int k=1;k<=10;k++) - { - int mini=10000000; - int minID=-1; - for(int s=0;s<=3;s++) - if(tot[s]score+=area[i]*area[i]*10; - for(int i=0;i<=3;i++) if(0!=area[i]) now[i]++; - memset(minimap,0,sizeof(minimap)); - memset(area,0,sizeof(area)); - memset(tot,0,sizeof(tot)); - } -}; -dot* bind[200]; -dot* bestroad[300]; -enclosure* game; - -void generate_output(int diff_x,int diff_y,int other_action) -{ - cout<<"[ACTION] "; - if(diff_x==0&&diff_y==0) cout<<"s "; - else if(diff_x==0&&diff_y==1) cout<<"d "; - else if(diff_x==0&&diff_y==-1) cout<<"u "; - else if(diff_x==1&&diff_y==0) cout<<"r "; - else if(diff_x==-1&&diff_y==0) cout<<"l "; - cout<0) - { - if(j==0||j==10||map[i][j]!=map[i][j+1]||map[i][j]==-1||map[i][j+1]==-1) edge_color[i][j][i-1][j]=-1; - else edge_color[i][j][i-1][j]=map[i][j]; - } - if(i<10) - { - if(j==0||j==10||map[i+1][j]!=map[i+1][j+1]||map[i+1][j]==-1||map[i+1][j+1]==-1) edge_color[i][j][i+1][j]=-1; - else edge_color[i][j][i+1][j]=map[i+1][j+1]; - } - if(j>0) - { - if(i==0||i==10||map[i][j]!=map[i+1][j]||map[i][j]==-1||map[i+1][j]==-1) edge_color[i][j][i][j-1]=-1; - else edge_color[i][j][i][j-1]=map[i+1][j]; - } - if(j<10) - { - if(i==0||i==10||map[i][j+1]!=map[i+1][j+1]||map[i][j+1]==-1||map[i+1][j+1]==-1) edge_color[i][j][i][j+1]=-1; - else edge_color[i][j][i][j+1]=map[i][j+1]; - } - } - } -} -int update_distance(dot* start_point,int ID) -{ - //Todo: - //1. Get unpassable lines - //2. Do a bfs - //Note: - //1. An edge label 400 or 500 means specially defined unpassable lines - //2. This update process is only valid for a certain ID, i.e. the defined player - unsigned int tmp_distance[15][15]; - bool in_queue[15][15]; - memset(tmp_distance,0xff,sizeof(tmp_distance)); - memset(in_queue,0,sizeof(in_queue)); - queue* q=new queue; - q->push(start_point); - tmp_distance[start_point->x][start_point->y]=0; - while ((!q->empty())) - { - dot* tmp=q->front(); - q->pop(); - in_queue[tmp->x][tmp->y]=false; - if((tmp->x>0)&&(edge_color[tmp->x][tmp->y][tmp->x-1][tmp->y]==-1)&&(tmp_distance[tmp->x-1][tmp->y]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x-1][tmp->y]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x-1; - tmp2->y=tmp->y; - if(!in_queue[tmp->x-1][tmp->y]) - { - q->push(tmp2); - in_queue[tmp->x-1][tmp->y]=true; - } - } - if((tmp->x<10)&&(edge_color[tmp->x][tmp->y][tmp->x+1][tmp->y]==-1)&&(tmp_distance[tmp->x+1][tmp->y]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x+1][tmp->y]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x+1; - tmp2->y=tmp->y; - if(!in_queue[tmp->x+1][tmp->y]) - { - q->push(tmp2); - in_queue[tmp->x+1][tmp->y]=true; - } - } - if((tmp->y>0)&&(edge_color[tmp->x][tmp->y][tmp->x][tmp->y-1]==-1)&&(tmp_distance[tmp->x][tmp->y-1]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x][tmp->y-1]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x; - tmp2->y=tmp->y-1; - if(!in_queue[tmp->x][tmp->y-1]) - { - q->push(tmp2); - in_queue[tmp->x][tmp->y-1]=true; - } - } - if((tmp->y<10)&&(edge_color[tmp->x][tmp->y][tmp->x][tmp->y+1]==-1)&&(tmp_distance[tmp->x][tmp->y+1]>tmp_distance[tmp->x][tmp->y]+1)) - { - tmp_distance[tmp->x][tmp->y+1]=tmp_distance[tmp->x][tmp->y]+1; - dot* tmp2=new dot; - tmp2->x=tmp->x; - tmp2->y=tmp->y+1; - if(!in_queue[tmp->x][tmp->y+1]) - { - q->push(tmp2); - in_queue[tmp->x][tmp->y+1]=true; - } - } - } - for(int i=0;i<=10;i++) for(int j=0;j<=10;j++) relative_distance[ID][start_point->x][start_point->y][i][j]=tmp_distance[i][j]; - return -1; -} -int calculate_area(dot** x,int dot_num) -{ - int i,j,k,s=1; - int ans=0; - for(i=1;i<=dot_num-1;i++) - if(x[i]->x==x[dot_num]->x&&x[i]->y==x[dot_num]->y) s=i; - for(i=1;i<=10;i++) - for(j=1;j<=10;j++) - { - bool left=false; - bool right=false; - bool top=false; - bool bottom=false; - for(k=s+1;k<=dot_num;k++) - { - if(x[k-1]->x==x[k]->x&&x[k-1]->y==x[k]->y) continue; - if(x[k-1]->x==x[k]->x) - { - if(x[k-1]->yy) - { - if(j==x[k]->y&&i>x[k]->x) top=true; - if(j==x[k]->y&&i<=x[k]->x) bottom=true; - } - if(x[k-1]->y>x[k]->y) - { - if(j==x[k-1]->y&&i>x[k]->x) top=true; - if(j==x[k-1]->y&&i<=x[k]->x) bottom=true; - } - continue; - } - if(x[k-1]->y==x[k]->y) - { - if(x[k-1]->xx) - { - if(i==x[k]->x&&j>x[k]->y) left=true; - if(i==x[k]->x&&j<=x[k]->y) right=true; - } - if(x[k-1]->x>x[k]->x) - { - if(i==x[k-1]->x&&j>x[k]->y) left=true; - if(i==x[k-1]->x&&j<=x[k]->y) right=true; - } - } - } - if(left&&right&&top&&bottom&&-1==map[i][j]) ans++; - } - return ans; -} -inline int get_distance(int ID,dot* p1,dot* p2,double heuristic) -{ - int tmp_distance=relative_distance[ID][p1->x][p1->y][p2->x][p2->y]; - double h_distance=(double)tmp_distance*heuristic; - //if((*p1)==(*(game->players[ID]->position))&&(*p2)==(*(game->players[ID]->position))) return 0; - if(p1->x==game->players[ID]->position->x&&p1->y==game->players[ID]->position->y&&p2->x==game->players[ID]->position->x&&p2->y==game->players[ID]->position->y) return 0; - else return (floor(h_distance)+game->players[ID]->trappedleft); -} -int calculate_maximum_safe_enclosure(int ID,int road_id,double heuristic) -{ - if((int)(relative_distance[ID][game->players[ID]->position->x][game->players[ID]->position->y][game->players[ID]->road[road_id]->x][game->players[ID]->road[road_id]->y])==-1) return; - int tmp_num=0,max_length=INT_MAX; - dot* tmp_road[300]; - for(int i=0;i<300;i++) tmp_road[i]=new dot; - for(int i=road_id;iplayers[ID]->num;i++) tmp_road[++tmp_num]=game->players[ID]->road[i]; - fout6<<"-----AI LOG------"<players[ID]->position->x<<","<players[ID]->position->y<<")"<players[ID]->num;i++) - { - int tmp_min_length=INT_MAX; - for(int j=0;j<4;j++) - { - if(j==ID) continue; - int real_distance=get_distance(j,game->players[j]->position,game->players[ID]->road[i],heuristic); - if(real_distanceplayers[ID]->position->x][game->players[ID]->position->y][game->players[ID]->road[1]->x][game->players[ID]->road[1]->y];i<=max_length;i++) - { - fout6<<"TESTING LENGTH: "<players[ID]->road[road_id]; - for(int j=0;j<300;j++) s[j]=new exdot; - bool visited[15][15]; - memset(visited,0,sizeof(visited)); - int s_size=0; - exdot* tmp=new exdot; - tmp->x=game->players[ID]->position->x; - tmp->y=game->players[ID]->position->y; - tmp->meta[0]=0; - s[s_size++]=tmp; - visited[tmp->x][tmp->y]=true; - fout6<<"DFS INITIALIZED"<0) - { - exdot* tmp1=new exdot; - tmp1=s[s_size-1]; - if((s_size>i&&!(tmp1->x==target->x&&tmp1->y==target->y))||(s_size!=i+1&&tmp1->x==target->x&&tmp1->y==target->y)) - { - //fout6<<"STACK OVERFLOW AT POINT ("<x<<","<y<<")"<x][tmp1->y]=false; - continue; - } - //fout6<<"APPROACHED POINT ("<x<<","<y<<")"<x==target->x&&tmp1->y==target->y&&s_size==i+1) - { - fout6<<"TARGET APPROACHED"<x=s[j]->x; - tmp2->y=s[j]->y; - sp[tmp_num+j+1]=tmp2; - } - fout6<<"CALCULATING AREA..."<maximum_area) - { - fout6<<"REPLACING MAXIMUM EXPECTED AREA... "<x=s[j-1]->x; - bestroad[j]->y=s[j-1]->y; - } - } - s_size--; - visited[tmp1->x][tmp1->y]=false; - } - else if(tmp1->meta[0]==0) - { - tmp1->meta[0]++; - if(tmp1->y<10&&edge_color[tmp1->x][tmp1->y][tmp1->x][tmp1->y+1]==-1&&!visited[tmp1->x][tmp1->y+1]) - { - bool safe=true; - for(int j=0;j<4;j++) - { - if(j!=now_id) - { - dot* p=new dot; - p->x=tmp1->x; - p->y=tmp1->y+1; - int tmp_distance=get_distance(j,game->players[j]->position,p,heuristic); - if(tmp_distancex=tmp1->x; - tmp2->y=tmp1->y+1; - tmp2->meta[0]=0; - visited[tmp2->x][tmp2->y]=true; - s[s_size++]=tmp2; - } - } - } - else if(tmp1->meta[0]==1) - { - tmp1->meta[0]++; - if(tmp1->y>0&&edge_color[tmp1->x][tmp1->y][tmp1->x][tmp1->y-1]==-1&&!visited[tmp1->x][tmp1->y-1]) - { - bool safe=true; - for(int j=0;j<4;j++) - { - if(j!=now_id) - { - dot* p=new dot; - p->x=tmp1->x; - p->y=tmp1->y-1; - int tmp_distance=get_distance(j,game->players[j]->position,p,heuristic); - if(tmp_distancex=tmp1->x; - tmp2->y=tmp1->y-1; - tmp2->meta[0]=0; - visited[tmp2->x][tmp2->y]=true; - s[s_size++]=tmp2; - } - } - } - else if(tmp1->meta[0]==2) - { - tmp1->meta[0]++; - if(tmp1->x<10&&edge_color[tmp1->x][tmp1->y][tmp1->x+1][tmp1->y]==-1&&!visited[tmp1->x+1][tmp1->y]) - { - bool safe=true; - for(int j=0;j<4;j++) - { - if(j!=now_id) - { - dot* p=new dot; - p->x=tmp1->x+1; - p->y=tmp1->y; - int tmp_distance=get_distance(j,game->players[j]->position,p,heuristic); - if(tmp_distancex=tmp1->x+1; - tmp2->y=tmp1->y; - tmp2->meta[0]=0; - visited[tmp2->x][tmp2->y]=true; - s[s_size++]=tmp2; - } - } - } - else if(tmp1->meta[0]==3) - { - tmp1->meta[0]++; - if(tmp1->x>0&&edge_color[tmp1->x][tmp1->y][tmp1->x-1][tmp1->y]==-1&&!visited[tmp1->x-1][tmp1->y]) - { - bool safe=true; - for(int j=0;j<4;j++) - { - if(j!=now_id) - { - dot* p=new dot; - p->x=tmp1->x-1; - p->y=tmp1->y; - int tmp_distance=get_distance(j,game->players[j]->position,p,heuristic); - if(tmp_distancex=tmp1->x-1; - tmp2->y=tmp1->y; - tmp2->meta[0]=0; - visited[tmp2->x][tmp2->y]=true; - s[s_size++]=tmp2; - } - } - } - else if(tmp1->meta[0]==4) - { - visited[tmp1->x][tmp1->y]=false; - s_size--; - } - } - } - return maximum_area; -} -void isolate_bind() -{ - for(int j=1;j<=bind_total;j++) - { - if(bind[j]->x>0) edge_color[bind[j]->x-1][bind[j]->y][bind[j]->x][bind[j]->y]=edge_color[bind[j]->x][bind[j]->y][bind[j]->x-1][bind[j]->y]=500; - if(bind[j]->x<=10) edge_color[bind[j]->x+1][bind[j]->y][bind[j]->x][bind[j]->y]=edge_color[bind[j]->x][bind[j]->y][bind[j]->x+1][bind[j]->y]=500; - if(bind[j]->y>0) edge_color[bind[j]->x][bind[j]->y+1][bind[j]->x][bind[j]->y]=edge_color[bind[j]->x][bind[j]->y][bind[j]->x][bind[j]->y-1]=500; - if(bind[j]->y<=10) edge_color[bind[j]->x][bind[j]->y-1][bind[j]->x][bind[j]->y]=edge_color[bind[j]->x][bind[j]->y][bind[j]->x][bind[j]->y+1]=500; - } -} -void brain() -{ - dot* tmp_bestroad[300]; - for(int i=0;i<300;i++) tmp_bestroad[i]=new dot; - update_edge_status(); - int original_edge_color[15][15][15][15]; - memcpy(original_edge_color,edge_color,sizeof(original_edge_color)); - for(int i=0;i<4;i++) - { - memcpy(edge_color,original_edge_color,sizeof(edge_color)); - isolate_bind(); - if(game->players[i]->state==state_down) - { - for(int j=1;jplayers[i]->num;j++) - { - dot* p1=new dot; - dot* p2=new dot; - p1=game->players[i]->road[j]; - p2=game->players[i]->road[j+1]; - edge_color[p1->x][p1->y][p2->x][p2->y]=edge_color[p2->x][p2->y][p1->x][p1->y]=400; - } - } - else if(game->players[i]->state==state_up) - { - //Downward Road - for(int j=0;j<10;j++) for(int k=0;k<=10;k++) if((edge_color[j][k][j+1][k]/100)==i) edge_color[j][k][j+1][k]=-1; - //Upward Road - for(int j=1;j<=10;j++) for(int k=0;k<=10;k++) if((edge_color[j][k][j-1][k]/100)==i) edge_color[j][k][j-1][k]=-1; - //Rightward Road - for(int j=0;j<=10;j++) for(int k=0;k<10;k++) if((edge_color[j][k][j][k+1]/100)==i) edge_color[j][k][j][k+1]=-1; - //Leftward Road - for(int j=0;j<=10;j++) for(int k=1;k<=10;k++) if((edge_color[j][k][j][k-1]/100)==i) edge_color[j][k][j][k-1]=-1; - } - update_distance(game->players[i]->position,i); - } - memcpy(edge_color,original_edge_color,sizeof(edge_color)); - if(game->players[now_id]->state==state_down) - { - isolate_bind(); - for(int j=1;jplayers[now_id]->num;j++) - { - dot* p1=new dot; - dot* p2=new dot; - p1=game->players[now_id]->road[j]; - p2=game->players[now_id]->road[j+1]; - edge_color[p1->x][p1->y][p2->x][p2->y]=edge_color[p2->x][p2->y][p1->x][p1->y]=400; - } - for(int j=1;jplayers[now_id]->num;j++) calculate_maximum_safe_enclosure(now_id,j,1); - } - memcpy(edge_color,original_edge_color,sizeof(edge_color)); - int now_x[4],now_y[4]; - for(int i=0;i<4;i++) - { - now_x[i]=game->players[i]->position->x; - now_y[i]=game->players[i]->position->y; - } - //Finite State Machine - /* - if(mode==mode_start) - { - mode=mode_right; - } - else if(mode==mode_right) - { - if(now_x[now_id]==10&&now_y[now_id]==10) mode=mode_up; - } - else if(mode==mode_up) - { - if(now_x[now_id]==0&&now_y[now_id]==10) mode=mode_left; - } - else if(mode==mode_left) - { - if(now_x[now_id]==0&&now_y[now_id]==0) mode=mode_down; - } - else if(mode==mode_down) - { - if(now_x[now_id]==10&&now_y[now_id]==0) mode=mode_halt; - } - //Output Area - if(mode==mode_right&&now_y[now_id]==0) - { - generate_output(0,1,1); - } - else if(mode==mode_right) - { - generate_output(0,1,0); - } - else if(mode==mode_up) - { - generate_output(-1,0,0); - } - else if(mode==mode_left) - { - generate_output(0,-1,0); - } - else if(mode==mode_down) - { - generate_output(1,0,0); - } - else if(mode==mode_halt) - { - generate_output(0,0,0); - } - */ - //Debug Output - fout1<<"---MAP---"<>label; - cin>>now_id; - cout<<"[POS] 10 0"<>label; - for(int i=0;i<=3;i++) - { - cin>>x[i]>>y[i]>>state[i]>>trappedleft[i]>>scoredecline[i]; - } - if(!started) - { - started=true; - //game=new enclosure(x[0],y[0],x[1],y[1],x[2],y[2],x[3],y[3]); - game=new enclosure(x,y); - } - game->pass(0,x[0],y[0],state[0]); - game->pass(1,x[1],y[1],state[1]); - game->pass(2,x[2],y[2],state[2]); - game->pass(3,x[3],y[3],state[3]); - game->make(); - cin>>bind_total; - for(int i=1;i<=bind_total;i++) - { - cin>>bind[i]->x>>bind[i]->y>>timeleft[i]; - } - brain(); - } -} diff --git a/orz_0_6_8.exe b/orz_0_6_8.exe deleted file mode 100644 index 9d9073f6f8b5faae18ea88b45dfc16ed11bcb194..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167973 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