```cpp
bool wuxiekeji(int x)
{
for(int y=x%n+1;y!=x;y=y%n+1)
{
if(over[y])continue;
if(shenfen[x]==1&&shenfen[y]==2)continue;
if(shenfen[x]==2&&shenfen[y]==2)continue;
if(shenfen[x]==3&&shenfen[y]==3)continue;
if(shenfen[x]==2&&shenfen[y]==1)continue;
for(int i=1;i<=num[y];i++)
{
if(pai[y][i]!=7)continue;
for(int j=i+1;j<=num[y];j++)
pai[y][j-1]=pai[y][j];
num[y]--;
tiao[y]=1;
printf("%d:无懈可击!\n",y);
Sleep(1000);
return !wuxiekeji(y);
}
}
return 1;
}
void nanmanruqin(int x)
{
for(int i=x%n+1;i!=x;i=i%n+1)
{
if(over[i])continue;
printf("南蛮->%d\n",i);
Sleep(1000);
bool dixiao=0;
for(int j=1;j<=num[x];j++)
{
if(pai[x][j]==7&&tiao[i]&&(shenfen[i]==shenfen[x]||(shenfen[i]^shenfen[x])==3))
{
for(int k=j+1;k<=num[x];k++)
pai[x][k-1]=pai[x][k];
num[x]--;
printf("%d:无懈可击!\n",x);
Sleep(1000);
tiao[x]=1;
dixiao=wuxiekeji(x);
}
if(dixiao)break;
}
if(!dixiao)
for(int j=x%n+1;j!=x;j=j%n+1)
{
if(over[j])continue;
for(int k=1;k<=num[j];k++)
{
if(pai[j][k]==7&&tiao[i]&&(shenfen[i]==shenfen[j]||(shenfen[i]^shenfen[j])==3))
{
for(int l=k+1;l<=num[j];l++)
pai[j][l-1]=pai[j][l];
num[j]--;
tiao[j]=1;
printf("%d:无懈可击!\n",j);
Sleep(1000);
dixiao=wuxiekeji(j);
}
if(dixiao)break;
}
if(dixiao)break;
}
if(!dixiao)
for(int j=1;j<=num[i];j++)
{
if(pai[i][j]==2)
{
for(int k=j+1;k<=num[i];k++)
pai[i][k-1]=pai[i][k];
num[i]--;
printf("%d:杀!\n",i);
Sleep(1000);
dixiao=1;
break;
}
}
if(!dixiao)
{
printf("%d:啊!\n",i);
Sleep(1000);
hp[i]--;
last[i]=x;
if(i==1&&!tiao[x])lei[x]=1;
if(hp[i]>0)continue;
for(int j=1;j<=num[i];j++)
{
if(pai[i][j]==1)
{
for(int k=j+1;k<=num[i];k++)
pai[i][k-1]=pai[i][k];
num[i]--;
printf("桃!\n");
Sleep(1000);
hp[i]++;
break;
}
}
if(hp[i]<=0)die(i);
}
}
}
void wanjianqifa(int x)
{
for(int i=x%n+1;i!=x;i=i%n+1)
{
if(over[i])continue;
printf("万箭->%d\n",i);
Sleep(1000);
bool dixiao=0;
for(int j=1;j<=num[x];j++)
{
if(pai[x][j]==7&&tiao[i]&&(shenfen[i]==shenfen[x]||(shenfen[i]^shenfen[x])==3))
{
for(int k=j+1;k<=num[x];k++)
pai[x][k-1]=pai[x][k];
num[x]--;
printf("%d:无懈可击!\n",x);
Sleep(1000);
tiao[x]=1;
dixiao=wuxiekeji(x);
}
if(dixiao)break;
}
if(!dixiao)
for(int j=x%n+1;j!=x;j=j%n+1)
{
if(over[j])continue;
for(int k=1;k<=num[j];k++)
{
if(pai[j][k]==7&&tiao[i]&&(shenfen[i]==shenfen[j]||(shenfen[i]^shenfen[j])==3))
{
for(int l=k+1;l<=num[j];l++)
pai[j][l-1]=pai[j][l];
num[j]--;
tiao[j]=1;
printf("%d:无懈可击!\n",j);
Sleep(1000);
dixiao=wuxiekeji(j);
}
if(dixiao)break;
}
if(dixiao)break;
}
if(!dixiao)
for(int j=1;j<=num[i];j++)
{
if(pai[i][j]==3)
{
for(int k=j+1;k<=num[i];k++)
pai[i][k-1]=pai[i][k];
num[i]--;
printf("%d:闪!\n",i);
Sleep(1000);
dixiao=1;
break;
}
}
if(!dixiao)
{
printf("%d:啊!\n",i);
Sleep(1000);
hp[i]--;
last[i]=x;
if(i==1&&!tiao[x])lei[x]=1;
if(hp[i]>0)continue;
for(int j=1;j<=num[i];j++)
{
if(pai[i][j]==1)
{
for(int k=j+1;k<=num[i];k++)
pai[i][k-1]=pai[i][k];
num[i]--;
printf("桃!\n");
Sleep(1000);
hp[i]++;
break;
}
}
if(hp[i]<=0)die(i);
}
}
}
void sha(int from,int x)
{
for(int i=1;i<=num[x];i++)
{
if(pai[x][i]==3)
{
printf("%d:闪!\n",x);
Sleep(1000);
for(int j=i+1;j<=num[x];j++)
pai[x][j-1]=pai[x][j];
num[x]--;
return;
}
}
hp[x]--;
printf("%d:啊!\n",x);
Sleep(1000);
last[x]=from;
if(hp[x]>0)return;
for(int i=1;i<=num[x];i++)
{
if(pai[x][i]==1)
{
hp[x]++;
printf("桃!\n");
Sleep(1000);
for(int j=i+1;j<=num[x];j++)
pai[x][j-1]=pai[x][j];
num[x]--;
break;
}
}
if(hp[x]<=0)die(x);
}
void juedou(int x,int y)
{
if(shenfen[x]==1&&shenfen[y]==2)
{
hp[y]--;
printf("%d:啊!\n",y);
Sleep(1000);
last[y]=x;
if(hp[y]>0)return;
for(int i=1;i<=num[y];i++)
{
if(pai[y][i]==1)
{
hp[y]++;
printf("桃!\n");
Sleep(1000);
for(int j=i+1;j<=num[y];j++)
pai[y][j-1]=pai[y][j];
num[y]--;
break;
}
}
if(hp[y]<=0)die(y);
return;
}
for(int i=x%n+1;i!=x;i=i%n+1)
{
if(over[i])continue;
for(int j=1;j<=num[i];j++)
{
if(pai[i][j]==7&&tiao[y]&&(shenfen[y]==shenfen[i]||(shenfen[i]^shenfen[y])==3))
{
for(int k=j+1;k<=num[i];k++)
pai[i][k-1]=pai[i][k];
num[i]--;
tiao[i]=1;
printf("%d:无懈可击!\n",i);
Sleep(1000);
if(wuxiekeji(i))return;
}
}
}
bool flag=1;
while(flag)
{
flag=0;
for(int i=1;i<=num[y];i++)
{
if(pai[y][i]==2)
{
for(int j=i+1;j<=num[y];j++)
pai[y][j-1]=pai[y][j];
printf("%d:杀!\n",y);
Sleep(1000);
num[y]--;
flag=1;
break;
}
}
swap(x,y);
}
printf("%d:啊!\n",x);
Sleep(1000);
hp[x]--;
last[x]=y;
if(hp[x]>0)return;
for(int i=1;i<=num[x];i++)
{
if(pai[x][i]==1)
{
hp[x]++;
printf("桃!\n");
Sleep(1000);
for(int j=i+1;j<=num[x];j++)
pai[x][j-1]=pai[x][j];
num[x]--;
break;
}
}
if(hp[x]<=0)die(x);
}
void work(int x)
{
pai[x][++num[x]]=get();
pai[x][++num[x]]=get();
Sleep(2000);
printf("Begin:%d\n",x);
printf("Emmmm.....");
Sleep(2000);
for(int i=1;i<=num[x];i++)
{
if(pai[x][i]==1)printf("【桃】");
if(pai[x][i]==2)printf("【杀】");
if(pai[x][i]==3)printf("【闪】");
if(pai[x][i]==4)printf("【决斗】");
if(pai[x][i]==5)printf("【南蛮入侵】");
if(pai[x][i]==6)printf("【万箭齐发】");
if(pai[x][i]==7)printf("【无懈可击】");
if(pai[x][i]==8)printf("【诸葛连弩】");
}
printf("\n");
Sleep(1000);
for(int j=1;j<=n;j++)
{
printf("%d:",j);
if(shenfen[j]==1)printf("{主公}");
if(shenfen[j]==2)printf("{忠臣}");
if(shenfen[j]==3)printf("{反贼}");
if(tiao[j])printf("(暴露)");
else if(lei[j]&&x==1)printf("(类反)");
else printf(" ");
printf("hp:");
for(int k=1;k<=4;k++)
{
if(k<=hp[j])putchar('*');
else putchar(' ');
}
if(over[j])printf("DEAD");
else
{
for(int k=1;k<=num[j];k++)
{
if(pai[j][k]==1)printf(" 【桃】 ");
if(pai[j][k]==2)printf(" 【杀】 ");
if(pai[j][k]==3)printf(" 【闪】 ");
if(pai[j][k]==4)printf(" 【决斗】 ");
if(pai[j][k]==5)printf("【南蛮入侵】");
if(pai[j][k]==6)printf("【万箭齐发】");
if(pai[j][k]==7)printf("【无懈可击】");
if(pai[j][k]==8)printf("【诸葛连弩】");
}
}
printf("\n");
}
Sleep(2000);
bool pos_sha=1;
for(int i=1;i<=num[x];i++)
{
if(pai[x][i]==1&&hp[x]!=4)
{
hp[x]++;
pai[x][i]=0;
for(int j=i+1;j<=num[x];j++)
pai[x][j-1]=pai[x][j];
num[x]--;
Sleep(1000);
printf("桃!\n");
Sleep(1000);
i=0;
continue;
}
if(pai[x][i]==2&&pos_sha)
{
int y=x%n+1;
while(over[y])y=y%n+1;
if(shenfen[x]==1)
{
if(lei[y]&&!tiao[y]||shenfen[y]==3&&tiao[y])
{
for(int j=i+1;j<=num[x];j++)
pai[x][j-1]=pai[x][j];
num[x]--;
Sleep(1000);
printf("杀!->%d\n",y);
Sleep(1000);
i=0;
sha(x,y);
if(!z[x])pos_sha=0;
}
}
else if(shenfen[x]==2)
{
if(tiao[y]&&shenfen[y]==3)
{
for(int j=i+1;j<=num[x];j++)
pai[x][j-1]=pai[x][j];
num[x]--;
tiao[x]=1;
Sleep(1000);
printf("杀!->%d\n",y);
Sleep(1000);
i=0;
sha(x,y);
if(!z[x])pos_sha=0;
}
}
else
{
if(tiao[y]&&shenfen[y]==2||shenfen[y]==1)
{
for(int j=i+1;j<=num[x];j++)
pai[x][j-1]=pai[x][j];
num[x]--;
tiao[x]=1;
Sleep(1000);
printf("杀!->%d\n",y);
Sleep(1000);
i=0;
sha(x,y);
if(!z[x])pos_sha=0;
}
}
}
if(pai[x][i]==4)
{
for(int y=x%n+1;y!=x;y=y%n+1)
{
if(over[y])continue;
if(shenfen[x]==1)
{
if(lei[y]&&!tiao[y]||shenfen[y]==3&&tiao[y])
{
for(int j=i+1;j<=num[x];j++)
pai[x][j-1]=pai[x][j];
num[x]--;
Sleep(1000);
printf("决斗!->%d\n",y);
Sleep(1000);
i=0;
juedou(x,y);
break;
}
}
else if(shenfen[x]==2)
{
if(tiao[y]&&shenfen[y]==3)
{
for(int j=i+1;j<=num[x];j++)
pai[x][j-1]=pai[x][j];
num[x]--;
tiao[x]=1;
Sleep(1000);
printf("决斗!->%d\n",y);
Sleep(1000);
i=0;
juedou(x,y);
break;
}
}
else
{
if(shenfen[y]==1)
{
for(int j=i+1;j<=num[x];j++)
pai[x][j-1]=pai[x][j];
num[x]--;
tiao[x]=1;
Sleep(1000);
printf("决斗!->%d\n",y);
Sleep(1000);
i=0;
juedou(x,y);
break;
}
}
}
if(over[x])break;
}
if(pai[x][i]==5)
{
pai[x][i]=0;
for(int j=i+1;j<=num[x];j++)
pai[x][j-1]=pai[x][j];
num[x]--;
Sleep(1000);
printf("南蛮入侵!\n");
Sleep(1000);
i=0;
nanmanruqin(x);
continue;
}
if(pai[x][i]==6)
{
pai[x][i]=0;
for(int j=i+1;j<=num[x];j++)
pai[x][j-1]=pai[x][j];
num[x]--;
Sleep(1000);
printf("万箭齐发!\n");
Sleep(1000);
i=0;
wanjianqifa(x);
continue;
}
if(pai[x][i]==8)
{
pai[x][i]=0;
for(int j=i+1;j<=num[x];j++)
pai[x][j-1]=pai[x][j];
num[x]--;
Sleep(1000);
printf("诸葛连弩!\n");
Sleep(1000);
i=0;
z[x]=1;
pos_sha=1;
}
}
}
int main()
{
scanf("%d%d",&n,&m);
tiao[1]=1;
for(int i=1;i<=n;i++)
{
hp[i]=4;
shenfen[i]=getshenfen();
pai[i][++num[i]]=get2();
pai[i][++num[i]]=get2();
pai[i][++num[i]]=get2();
pai[i][++num[i]]=get2();
}
for(int i=1;i<=m;i++)
paidui[i]=get2();
now=1;
for(int i=1;;i=i%n+1)
{
if(over[i])continue;
work(i);
}
return 0;
}
```
by wucstdio @ 2018-11-06 20:32:27
%%%
by sky_fackr @ 2018-11-06 20:34:03
@[wucstdio](/space/show?uid=54214) %%%wqy神仙
by Gypsophila @ 2018-11-06 20:35:14
%%%
by wwz20050323 @ 2018-11-06 20:36:18
%%%
by Kevin_Wa @ 2018-11-06 20:37:13
%%%
by Ally_unstoppable @ 2018-11-06 20:38:05
%%%%
by 镉八君 @ 2018-11-06 20:39:38
%%%
by diltraser @ 2018-11-06 20:41:14
%%%
by 一座城·守一人 @ 2018-11-06 20:42:18
@[ACの666](/space/show?uid=54745) %%%初一神仙
by wucstdio @ 2018-11-06 20:45:41