记录编号 215164 评测结果 AAAAAAAAAA
题目名称 [NOIP 2015PJ]求和 最终得分 100
用户昵称 GravatarGaoErFu 是否通过 通过
代码语言 C++ 运行时间 0.335 s
提交时间 2015-12-20 12:39:57 内存使用 1.31 MiB
显示代码纯文本
#include<stdio.h>
#include<stdlib.h>
struct q
{
	int n;//编号 
	int s;//数字 
	int c;//颜色 
};
int cmp(const void *a,const void *b)
{
	struct q *aa=(q *)a;
	struct q *bb=(q *)b;
	if((aa->c)>(bb->c))
	return 1;
	else if((aa->c)==(bb->c)&&(aa->n)>(bb->n))
	return 1;
	return -1;
} 
int main()
{
	freopen("2015sum.in","r",stdin);
	freopen("2015sum.out","w",stdout);
	int i,j,m,n,y; 
	long long x=0;
	struct q a[100010]={0};
	scanf("%d%d",&n,&m);
	for(i=0;i<n;i++)
	{scanf("%d",&a[i].s);a[i].n=i+1;}//表示数字与编号; 
	for(i=0;i<n;i++)
	{scanf("%d",&a[i].c);}//表示颜色; 
	qsort(a,n,sizeof(a[0]),cmp);
	for(i=0;i<n-1;i++)
	{
		j=i+1;
		while(a[i].c==a[j].c) 
		{if((a[i].n+a[j].n)%2==0)
		{x=x%10007+(a[i].s+a[j].s)%10007*(a[i].n+a[j].n)%10007;}j++;x=x%10007;}
	}
	printf("%lld",x%10007);
	return 0;
}