为什么从第三个数据点开始就没过
#include <bits/stdc++.h>
using namespace std;
int n,m;
int col[1000010],num[1000010];
int a1[1000010][2],a2[1000010][2],a3[1000010][2],a4[1000010][2];
const int v=10007;
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++) scanf("%d",&num[i]);
for(int i=1;i<=n;i++) scanf("%d",&col[i]);
memset(a1,0,sizeof(a1));
memset(a2,0,sizeof(a2));
memset(a3,0,sizeof(a3));
memset(a4,0,sizeof(a4));
long long ans=0;
for(int i=1;i<=n;i++){
int y=i%2;
ans+=a1[col[i]][y];ans%=v;
ans+=a2[col[i]][y]*num[i];ans%=v;
ans+=a3[col[i]][y]*i;ans%=v;
ans+=a4[col[i]][y]*i%v*num[i]%v;ans%=v;
a1[col[i]][y]+=1LL*i*num[i]%v;a1[col[i]][y]%=v;
a2[col[i]][y]+=i;a2[col[i]][y]%=v;
a3[col[i]][y]+=num[i];a2[col[i]][y]%=v;
++a4[col[i]][y];a4[col[i]][y]%=v;
}
printf("%lld",ans);
return 0;
}