记录编号 |
594941 |
评测结果 |
AAAAAAAAAAAAAAAAAAAA |
题目名称 |
战棋 |
最终得分 |
100 |
用户昵称 |
小金 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.126 s |
提交时间 |
2024-10-06 11:41:48 |
内存使用 |
3.55 MiB |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
struct ch{
int l,t;
char z,s;
}a[60],b[60],a2[60],b2[60];
int n,xx,aa,bb,cc,s1,s2,ji1,ji2,ans1,ans2;
int Getid()
{
return xx=(xx*aa+bb)%cc;
}
void jsCa(int xh)
{
int sum=0;
for(int i=1;i<=s1;i++)
{
if(a[i].s=='C') sum++;
}
a[xh].l+=sum*20;
a[xh].t+=sum*20;
if(a[xh].s=='C')
{
a[xh].l-=20;
a[xh].t-=20;
}
}
void jsCb(int xh)
{
int sum=0;
for(int i=1;i<=s2;i++)
{
if(b[i].s=='C') sum++;
}
b[xh].l+=sum*20;
b[xh].t+=sum*20;
if(b[xh].s=='C')
{
b[xh].l-=20;
b[xh].t-=20;
}
}
void jsKa()
{
for(int i=1;i<=s1;i++)
{
if(a[i].z=='M')
{
a[i].l+=20;
a[i].t+=20;
}
}
}
void jsGa()
{
for(int i=1;i<=s1;i++)
{
if(a[i].s=='G') a[i].t+=50;
}
}
void jsKb()
{
for(int i=1;i<=s2;i++)
{
if(b[i].z=='M')
{
b[i].l+=20;
b[i].t+=20;
}
}
}
void jsGb()
{
for(int i=1;i<=s2;i++)
{
if(b[i].s=='G') b[i].t+=50;
}
}
void qjsLa(int xh)
{
for(int i=1;i<=s1;i++)
{
if(a[i].z=='M'&&i!=xh) a[i].t-=20;
}
}
void qjsLb(int xh)
{
for(int i=1;i<=s2;i++)
{
if(b[i].z=='M'&&i!=xh) b[i].t-=20;
}
}
void work()
{
while(s1!=0&&s2!=0)
{
int x=(Getid()%s1)+1;
int y=(Getid()%s2)+1;
if(a[x].z=='P') jsCa(x);
if(b[y].z=='P') jsCb(y);
a[x].l-=b[y].t;
b[y].l-=a[x].t;
if(a[x].l<=0)
{
if(a[x].s=='K') jsKa();
if(a[x].z=='P') jsGa();
if(a[x].s=='L') qjsLa(x);
for(int i=x+1;i<=s1;i++)
{
a[i-1]=a[i];
}
s1--;
}
if(b[y].l<=0)
{
if(b[y].s=='K') jsKb();
if(b[y].z=='P') jsGb();
if(b[y].s=='L') qjsLb(y);
for(int i=y+1;i<=s2;i++)
{
b[i-1]=b[i];
}
s2--;
}
}
}
void jsLa()
{
for(int i=1;i<=s1;i++)
{
if(a[i].s=='L')
{
for(int j=1;j<=s1;j++)
{
if(a[j].z=='M'&&i!=j)
{
a[j].t+=20;
}
}
}
}
}
void jsLb()
{
for(int i=1;i<=s2;i++)
{
if(b[i].s=='L')
{
for(int j=1;j<=s2;j++)
{
if(b[j].z=='M'&&i!=j)
{
b[j].t+=20;
}
}
}
}
}
void chu()
{
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
for(int i=1;i<=n;i++)
{
a[i]=a2[i];
b[i]=b2[i];
}
}
int main()
{
freopen("chess.in","r",stdin);
freopen("chess.out","w",stdout);
scanf("%d%d%d%d%d",&n,&xx,&aa,&bb,&cc);
for(int i=1;i<=n;i++)
{
scanf("%d%d %c %c",&a2[i].t,&a2[i].l,&a2[i].z,&a2[i].s);
}
for(int i=1;i<=n;i++)
{
scanf("%d%d %c %c",&b2[i].t,&b2[i].l,&b2[i].z,&b2[i].s);
}
for(int k=1;k<=500;k++)
{
s1=n;
s2=n;
chu();
jsLa();
jsLb();
work();
ans1+=s1;
ans2+=s2;
}
printf("%d %d",ans1,ans2);
return 0;
}