求助(滚动数组)
查看原帖
求助(滚动数组)
542974
William_qwq楼主2021/10/22 21:14
#include<bits/stdc++.h>
using namespace std;
const int mod=10007;
vector<int> g[10][25],num[10][20];
int c[1000010],a[1000010];
int main()
{
    int n,t,i,j,k,x,z,ans=0;
    cin>>n>>t;
    for(i=1;i<=n;i++)
    {
    	cin>>a[i];
	}
	for(i=1;i<=n;i++)
    {
    	cin>>c[i];
    	g[i%2][c[i]].push_back(a[i]);
	    num[i%2][c[i]].push_back(i);
	}
	for(i=1;i<=t;i++)
	{
		for(j=0;j<g[1][c[i]].size();j++)
		{
			for(k=j+1;k<g[1][c[i]].size();k++)
			{
				ans+=(g[1][c[i]][j]+g[1][c[i]][k])*(num[1][c[i]][j]+num[1][c[i]][k]);
				ans%=mod;
			}
		}
		for(j=0;j<g[0][c[i]].size();j++)
		{
			for(k=j+1;k<g[0][c[i]].size();k++)
			{
				ans+=(g[0][c[i]][j]+g[0][c[i]][k])*(num[0][c[i]][j]+num[0][c[i]][k]);
				ans%=mod;
			}
		}
	}
	cout<<ans;
	return 0;
}

2021/10/22 21:14
加载中...