蒟蒻求助,wa50pts
查看原帖
蒟蒻求助,wa50pts
835809
T_TLucas_Yin楼主2023/10/17 10:09

rt

#include<bits/stdc++.h>
using namespace std;
int n1,n2,n3,n4;
int v1[105],v2[105],v3[105],v4[105];
char c1[105],c2[105],c3[105],c4[105];
int sumh[14]={0,-50,-2,-3,-4,-5,-6,-7,-8,-9,-10,-20,-30,-40};
int fc(){//找C10的下家
	for(int i=1;i<=n1;i++) if(c1[i]=='C'&&v1[i]==10) return 1;
	for(int i=1;i<=n2;i++) if(c2[i]=='C'&&v2[i]==10) return 2;
	for(int i=1;i<=n3;i++) if(c3[i]=='C'&&v3[i]==10) return 3;
	for(int i=1;i<=n4;i++) if(c4[i]=='C'&&v4[i]==10) return 4;
	return 0;
}
int fd(){//找D11的下家
	for(int i=1;i<=n1;i++) if(c1[i]=='D'&&v1[i]==11) return 1;
	for(int i=1;i<=n2;i++) if(c2[i]=='D'&&v2[i]==11) return 2;
	for(int i=1;i<=n3;i++) if(c3[i]=='D'&&v3[i]==11) return 3;
	for(int i=1;i<=n4;i++) if(c4[i]=='D'&&v4[i]==11) return 4;
	return 0;
}
int fs(){//找S12的下家
	for(int i=1;i<=n1;i++) if(c1[i]=='S'&&v1[i]==12) return 1;
	for(int i=1;i<=n2;i++) if(c2[i]=='S'&&v2[i]==12) return 2;
	for(int i=1;i<=n3;i++) if(c3[i]=='S'&&v3[i]==12) return 3;
	for(int i=1;i<=n4;i++) if(c4[i]=='S'&&v4[i]==12) return 4;
	return 0;
}
int fh(){//判断是否有吞掉H牌的下家以及是谁
	int flag1=0,flag2=0,flag3=0,flag4=0,f;
	for(int i=1;i<=n1;i++) if(c1[i]=='H') flag1=1,f=1;
	for(int i=1;i<=n2;i++) if(c2[i]=='H') flag2=1,f=2;
	for(int i=1;i<=n3;i++) if(c3[i]=='H') flag3=1,f=3;
	for(int i=1;i<=n4;i++) if(c4[i]=='H') flag4=1,f=4;
	if(flag1+flag2+flag3+flag4==1) return f;
	else return -1;
}
int main(){
	while(1){
		int cnt0=0;//输入
		cin>>n1;
		if(n1==0) cnt0++;
		for(int i=1;i<=n1;i++) cin>>c1[i]>>v1[i];
		cin>>n2;
		if(n2==0) cnt0++;
		for(int i=1;i<=n2;i++) cin>>c2[i]>>v2[i];
		cin>>n3;
		if(n3==0) cnt0++;
		for(int i=1;i<=n3;i++) cin>>c3[i]>>v3[i];
		cin>>n4;
		if(n4==0) cnt0++;
		for(int i=1;i<=n4;i++) cin>>c4[i]>>v4[i];
		if(cnt0==4) break;//判断数据点结束
		int hc10=fc(),hd11=fd(),hs12=fs(),hh=fh();//找特殊
		int sum[5]={0};
		if(hh!=-1){//若h牌在同一下家
			sum[hh]+=200;
			if(hd11==hh&&hs12==hh) sum[hh]+=300;
		}
		else{//不在同一下家
			//sum[hd11]+=100,sum[hs12]-=100;
			for(int i=1;i<=n1;i++) if(c1[i]=='H') sum[1]+=sumh[v1[i]];
			for(int i=1;i<=n2;i++) if(c2[i]=='H') sum[2]+=sumh[v2[i]];
			for(int i=1;i<=n3;i++) if(c3[i]=='H') sum[3]+=sumh[v3[i]];
			for(int i=1;i<=n4;i++) if(c4[i]=='H') sum[4]+=sumh[v4[i]];
		}
		sum[hd11]+=100,sum[hs12]-=100,sum[hc10]*=2;
		for(int i=1;i<=4;i++){
			if(sum[i]>0) printf("+%d ",sum[i]);
			else printf("%d ",sum[i]);
		}
		cout<<"\n";
	}
	return 0;
}
2023/10/17 10:09
加载中...