不知道 gi,j,k 的求法哪里错了
for(int i=1;i<=n;i++)
{
memset(s1,0,sizeof(s1));
memset(s2,0,sizeof(s2));
for(int j=i;j<=n;j++) s1[j][j]=s2[j][j]=g[i][j][j]=f[i][j];
for(int j=i+1;j<=n;j++)
{
for(int k=i+1;k<=n;k++)
{
if(j==k) continue;
if(j<k)
{
g[i][j][k]=1ll*(s1[j][r[k]]-s1[j][l[k]-1]+p)%p*t[k]%p;
s1[j][k]=(s1[j][k-1]+g[i][j][k])%p;
}
else
{
g[i][j][k]=1ll*(s2[k][r[j]]-s2[k][l[j]-1]+p)%p*t[j]%p;
s2[k][j]=(s2[k][j-1]+g[i][j][k])%p;
}
}
}
}