记录编号 |
215164 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2015PJ]求和 |
最终得分 |
100 |
用户昵称 |
GaoErFu |
是否通过 |
通过 |
代码语言 |
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;
}