90 pts求调.
查看原帖
90 pts求调.
609249
Walter_Fang楼主2024/7/16 21:21
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=1e5+10,M=1e2+10;
ll n,q,L,i,j,p=1,op,k,c[N][M],d[N],a[N],f[N],l[N],m[2],pos[2]={1,1};
int main(){
    cin>>n>>m[0]>>q>>L;memset(f,-1,sizeof f);m[1]=m[0];
    for(i=1;i<=n;i++)for(j=0;j<L;j++)cin>>c[i][j];
    for(i=1;i<=n;i++)cin>>d[i];
    while(cin>>op>>k)
        if(op-1){
            if(f[pos[p]]==!p)continue;
            for(i=1;i<=k;i++)
                if(m[p]>=c[pos[p]][l[pos[p]]]&&l[pos[p]]<L)a[pos[p]]+=c[pos[p]][l[pos[p]]],m[p]-=c[pos[p]][l[pos[p]]],f[pos[p]]=p,l[pos[p]]++;
                else break;
        }
		else{
            if(p==1)for(i=1;i<=n;i++)if(f[i]!=-1)m[f[i]]+=d[i];
            p=!p;
            for(i=1;i<=k;i++){
                pos[p]=pos[p]%n+1;
                if(f[pos[p]]!=-1)
                    if(f[pos[p]]==p)m[p]+=a[pos[p]];
                    else if(f[pos[p]]!=-1)m[!p]+=a[pos[p]],m[p]-=a[pos[p]];
                if(m[p]<0)return cout<<(!m[p]?"Renko":"Merry"),0;
            }
        }
    for(i=1;i<=n;i++)if(f[i]!=-1)m[f[i]]+=d[i];
    cout<<m[0]<<' '<<m[1];
}
2024/7/16 21:21
加载中...