有谁能帮我解释一下为啥要-1和+1,题解里面好像就一笔带过
#include<bits/stdc++.h>
using namespace std;
int n,m,ans,b[10010];
struct node{
int f,num;
}a[10010][110];
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
int sum=0;
for(int j=1;j<=m;j++){
cin>>a[i][j].f>>a[i][j].num;
if(a[i][j].f==1)sum++;
}
b[i]=sum;
}
int t;
cin>>t;
t++;
for(int i=1;i<=n;i++){
ans=(ans+a[i][t].num)%20123;
int v=(a[i][t].num-1)%b[i];//这为什么要-1
int s=0;
for(int j=t;;j++){
if(j==m+1)j=1;
if(a[i][j].f==1)s++;
if(s==v+1){//这为什么要+1
t=j;
break;
}
}
}
cout<<ans;
return 0;
}