这道题我这个制仗已经掰了一个下午,输出的数总是不对。对着题解又对照了好久,请问到底是什么地方出了问题QAQ 原题链接https://www.luogu.com.cn/problem/P8874
#include<bits/stdc++.h>
using namespace std;
int a[1000],c[1000][1000],pos[2]={1,1},b[1000],lv[1000],d[1000];
long long qi[2];
int main(){
int n,m,q,l,i,j;
scanf("%d %d %d %d",&n,&m,&q,&l);
for(i=1;i<=n;i++){
for(j=0;j<l;j++){
cin >> c[i][j];
}
}
for(i=1;i<=n;i++) scanf("%d",&d[1]);
int op,k,who=1;
qi[0]=qi[1]=m;
memset(b,-1,sizeof b);
while(cin>>op>>k){
if(op==1){
if(who==1){
for(i=1;i<=n;i++){
if(b[i]!=-1) qi[b[i]]+=d[i];
}
}
who=!who;
for(i=1;i<=k;i++){
pos[who]=pos[who]%n+1;
if(b[pos[who]]!=-1){
if(b[pos[who]]==who) qi[who]+=a[pos[who]];
else if(b[pos[who]]!=-1){
qi[who]-=a[pos[who]];
qi[!who]+=a[pos[who]];
}
}
if(qi[who]<0){
if(who==0) puts("Renko");
else puts("Merry");
return 0;
}
}
}
else{
if(b[pos[who]]==!who) continue;
for(i=1;i<=k;i++){
if(qi[who]>=c[pos[who]][lv[pos[who]]]&&lv[pos[who]]<l){
a[pos[who]]+=c[pos[who]][lv[pos[who]]];
qi[who]-=c[pos[who]][lv[pos[who]]];
b[pos[who]]=who;
++lv[pos[who]];
}
else break;
}
}
}
for(i=1;i<=n;i++){
if(b[i]!=-1) qi[b[i]]+=d[i];
}
cout<<qi[0]<<" "<<qi[1]<<endl;
return 0;
}