/ Vijos / 讨论 / 求和 /

为什么wa了6个。。。。。。

#include<cstdio>
#include<cmath>

using namespace::std;

typedef long long ll;

int num[100010];
int col[100010][2][4];//(i,m,0)表示所有color为i的符合条件的数的个数,1为n1+n2+n3...以此类推,2为k1+k2+k3,3为
int n,c;
ll ans=0;

int main()
{
scanf("%d%d",&n,&c);
for(int i=1;i<=n;i++){
scanf("%d",&num[i]);
}
for(int i=1;i<=n;i++){
int j;
scanf("%d",&j);
int k=i%2;
col[j][k][0]++;
col[j][k][1]=(col[j][k][1]+num[i])%10007;
col[j][k][2]=(col[j][k][2]+i)%10007;
col[j][k][3]=(col[j][k][3]+i*num[i])%10007;
}
for(int i=1;i<=c;i++){
if(col[i][0][0]>=2){
ans=ans+(1LL*(col[i][0][0]-2)*(col[i][0][3]))%10007+1LL*(col[i][0][1]*col[i][0][2])%10007;
ans=ans%10007;
}
if(col[i][1][0]>=2){
ans=ans+(1LL*(col[i][1][0]-2)*(col[i][1][3]))%10007+1LL*(col[i][1][1]*col[i][1][2])%10007;
ans=ans%10007;
}
}
printf("%lld",ans);
}

1 条评论

  • 1

信息

ID
1976
难度
8
分类
(无)
标签
递交数
3003
已通过
400
通过率
13%
被复制
16
上传者