70分求调
查看原帖
70分求调
1353550
Jimmy0313楼主2024/8/18 15:45
#include<iostream>
#include<cmath>
#include<bits/stdc++.h>
using namespace std;

long long f,/*谁操作0是莲子,1是梅利*/ qs[2],/*两人的钱数*/wz[2]={0},/*两人的位置*/
n,m,q,l,a[110],c[110][110],d[110]/*如题目所示*/,b[110]/*谁占领了0是莲子,1是梅利*/,e[110]/*等级*/; 
bool w(int k){
	for(int i=0;i<k;i++){
		wz[f]++;
		wz[f]%=n;
		if(qs[f]<0){
			return 0;
		}
		if(b[wz[f]]==f){
			qs[f]+=a[wz[f]];
		}else if(b[wz[f]]==f^1){
			qs[f^1]+=a[wz[f]];
			qs[f]-=a[wz[f]];
		}
		if(qs[f]<0){
			return 0;
		}
	}
	if(qs[f]<0){
		return 0;
	}
	return 1;
}
void zs(int k){
	if(b[wz[f]]==f^1){
		return;
	}
	for(int j=0;j<k&&c[wz[f]][e[wz[f]]]<=qs[f]&&e[wz[f]]<l;j++){
		a[wz[f]]+=c[wz[f]][e[wz[f]]];
		qs[f]-=c[wz[f]][e[wz[f]]];
		e[wz[f]]++;
		b[wz[f]]=f;
	}
}
int main(){
	cin>>n>>m>>q>>l;
	qs[0]=qs[1]=m;
	for(int i=0;i<n;i++){
		for(int j=0;j<l;j++){
			cin>>c[i][j];
		}
		a[i]=0;
	}
	for(int i=0;i<n;i++){
		cin>>d[i];
		b[i]=-1; 
	}
	int l,k;
	cin>>l>>k;
	for(int i=0;i<q;i++){
		f=0;
		for(int i=0;i<n;i++){
			if(b[i]!=-1){
				qs[b[i]]+=d[i];
			}
		} 
		if(!w(k)){
			cout<<"Renko";
			return 0;
		}
		cin>>l>>k;
		if(l==2){
			zs(k);
			cin>>l>>k;
		}
		f=1;
		if(!w(k)){
			cout<<"Merry";
			return 0;
		}
		if(cin>>l>>k){ 
			if(l==2){
				zs(k);
				if(i+1<q){
					cin>>l>>k;
				}
			} 
		} 
	}
	for(int i=0;i<n;i++){
		if(b[i]!=-1){
			qs[b[i]]+=d[i];
		}
	} 
	cout<<qs[0]<<" "<<qs[1];
}
2024/8/18 15:45
加载中...