记录编号 |
595206 |
评测结果 |
AAAAAAAAAAAAAAAAAAAA |
题目名称 |
战棋 |
最终得分 |
100 |
用户昵称 |
郑霁桓 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.170 s |
提交时间 |
2024-10-10 19:46:26 |
内存使用 |
3.35 MiB |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
long long n,X,A,B,C,sa,sb,p,x,y,la,lb,ca,cb,ss,as,bs,pa,pb;
int G(){return X=(X*A+B)%C;}
struct per{
long long da,lf;
char st,shu;
}a[55],b[55],c[105];
int main(){
freopen("chess.in","r",stdin);
freopen("chess.out","w",stdout);
cin>>n>>X>>A>>B>>C;
for(int i=0;i<n;i++){
cin>>a[i].da>>a[i].lf>>a[i].st>>a[i].shu;
if(a[i].shu=='L') la++;
}
for(int i=0;i<n;i++){
if(a[i].st=='M')
if(a[i].shu!='L') a[i].da+=20*la;
else a[i].da+=20*la-20;
c[i]=a[i];
}
for(int i=0;i<n;i++){
cin>>b[i].da>>b[i].lf>>b[i].st>>b[i].shu;
if(b[i].shu=='L') lb++;
}
for(int i=0;i<n;i++){
if(b[i].st=='M')
if(b[i].shu!='L') b[i].da+=20*lb;
else b[i].da+=20*lb-20;
c[i+n]=b[i];
}
ss=500;
while(ss--){
sa=sb=n;
for(int i=0;i<n;i++) a[i]=c[i];
for(int i=n;i<n+n;i++) b[i-n]=c[i];
while(1){
ca=cb=0;
if(sa==0||sb==0){
as+=sa,bs+=sb;
break;
}
x=G()%sa,y=G()%sb;
for(int i=0;i<sa;i++) if(a[i].shu=='C') ca++;
for(int i=0;i<sb;i++) if(b[i].shu=='C') cb++;
if(a[x].st=='P')
if(a[x].shu=='C') a[x].da+=20*ca-20,a[x].lf+=20*ca-20;
else a[x].da+=20*ca,a[x].lf+=20*ca;
if(b[y].st=='P')
if(b[y].shu=='C') b[y].da+=20*cb-20,b[y].lf+=20*cb-20;
else b[y].da+=20*cb,b[y].lf+=20*cb;
a[x].lf-=b[y].da,b[y].lf-=a[x].da;
if(a[x].lf<=0){
if(a[x].shu=='K') for(int i=0;i<sa;i++) if(a[i].st=='M') a[i].da+=20,a[i].lf+=20;
if(a[x].st=='P') for(int i=0;i<sa;i++) if(a[i].shu=='G') a[i].da+=50;
if(a[x].shu=='L') for(int i=0;i<sa;i++) if(a[i].st=='M') a[i].da-=20;
for(int i=x+1;i<sa;i++) a[i-1]=a[i];
sa--;
}
if(b[y].lf<=0){
if(b[y].shu=='K') for(int i=0;i<sb;i++) if(b[i].st=='M') b[i].da+=20,b[i].lf+=20;
if(b[y].st=='P') for(int i=0;i<sb;i++) if(b[i].shu=='G') b[i].da+=50;
if(b[y].shu=='L') for(int i=0;i<sb;i++) if(b[i].st=='M') b[i].da-=20;
for(int i=y+1;i<sb;i++) b[i-1]=b[i];
sb--;
}
}
}
cout<<as<<" "<<bs;
return 0;
}