记录编号 469955 评测结果 AAAAAAAAAA
题目名称 [NOIP 2015PJ]求和 最终得分 100
用户昵称 Gravatar爆零自动机 是否通过 通过
代码语言 C++ 运行时间 0.157 s
提交时间 2017-11-03 22:29:56 内存使用 1.84 MiB
显示代码纯文本
#include <iostream>
#include <cstring>
#include <cmath>
#include <cstdio>
#include <algorithm>
#include <string>
#include <climits>
#include <cstdlib>
using namespace std;

const int maxn=100000+10;
const int mod=10007;
struct card
{
	int clr,num,next;
}table[maxn];


int n,m,ans;
int clr,last[maxn];

int main()
{
	freopen("2015sum.in","r",stdin);
	freopen("2015sum.out","w",stdout);
	
	scanf("%d%d",&n,&m);
	
	for(int i=1; i<=n; i++)
	{
		scanf("%d",&table[i].num);
	} 
	for(int i=1; i<=n; i++)
	{
		scanf("%d",&clr);
		table[i].clr=clr;
		table[last[clr]].next=i;
		last[clr]=i;
	}
	
	for(int i=1; i<=n; i++)
	{
		int p=table[i].next;
		while(p)
		{
			if((p+i)%2==0)
				ans=(ans+(((i+p)%mod)*((table[i].num+table[p].num)%mod))%mod)%mod;
			p=table[p].next;
		}
	}
	cout<<ans<<endl;
	return 0;
}