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