代码如下:
#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll n,m,sum=0;
struct node{
ll number,color,place;
}a[100010];
bool cmp(node a,node b){
if (a.place%2==b.place%2){
if (a.color==b.color) return a.place<b.place;
return a.color<b.color;
}
return a.place%2<b.place%2;
}
int main(){
scanf("%lld %lld",&n,&m);
for (ll i=1;i<=n;i++){
scanf("%lld",&a[i].number);
}
for (ll i=1;i<=n;i++){
scanf("%lld",&a[i].color);
}
for (ll i=1;i<=n;i++){
a[i].place=i;
}
sort(a+1,a+1+n,cmp);
for (ll i=1;i<=n;i++){
for (ll k=i+1;k<=n;k++){
if ((a[i].place+a[k].place)%2==1) break;
if (a[i].color!=a[k].color) break;
sum=(sum+(a[i].place+a[k].place)*(a[i].number+a[k].number))%10007;
}
}
printf("%lld",sum);
return 0;
}
求解答!