求助
查看原帖
求助
263469
Ink_Bottle楼主2020/9/13 11:08

我加了一大堆特判,结果只有80啊啊啊我不活了

代码:

#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
ll n,m,a[1000001],b[1000001],cnt1,cnt2,tot1,tot2,f=0;
ll used[8];
int main()
{
	//freopen("snooker.in","r",stdin);
	//freopen("snooker.out","w",stdout);
	cin >> n >> m;
	for(ll i=1;i<=n;i++) cin >> a[i];
	for(ll i=1;i<=m;i++) cin >> b[i];
	tot1=tot2=1;
	while(a[tot1]==1&&tot1<=n) tot1+=2;
	while(b[tot2]==1&&tot2<=m) tot2+=2;
	if((tot1+tot2)/2-1==15) f=1;
	for(ll i=1;i<n;i++) cnt1+=a[i];
	for(ll i=1;i<m;i++) cnt2+=b[i];
	used[0]=used[1]=1;
	for(ll i=tot1;i<n;i++) used[a[i]]=1;
	for(ll i=tot2;i<m;i++) used[b[i]]=1;
	if(f)
	{
		if(a[n]<b[m])
		{
			if(a[n]==0||!used[a[n]-1]) cnt2+=max(4ll,a[n]);
			else cnt1+=a[n],used[a[n]]=1;
			if(b[m]==0||!used[b[m]-1]) cnt1+=max(4ll,b[m]);
			else cnt2+=b[m];
		}
		else
		{
			if(b[m]==0||!used[b[m]-1]) cnt1+=max(4ll,b[m]);
			else cnt2+=b[m],used[b[m]]=1;
			if(a[n]==0||!used[a[n]-1]) cnt2+=max(4ll,a[n]);
			else cnt1+=a[n],used[a[n]]=1;
		}
	}
	else
	{
		if(b[m]==0||((m%2==1&&b[m]!=1)||(m%2==0&&b[m]<=1))) cnt1+=max(4ll,b[m]);
		else cnt2+=b[m];
		if(a[n]==0||((n%2==1&&a[n]!=1)||(n%2==0&&a[n]<=1))) cnt2+=max(4ll,a[n]);
		else cnt1+=a[n];
	}
	cout << cnt1 << ' ' << cnt2 << endl;
	return 0;
}
```
2020/9/13 11:08
加载中...