比赛 EYOI暨SBOI暑假快乐赛3rd 评测结果 WWWWWWWWWWWWWWWWTTTT
题目名称 最小环(民间数据) 最终得分 0
用户昵称 瞻远Daniel 运行时间 9.145 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2022-06-27 11:41:58
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define N 200000
int n,m,sum;
int a[N+4];
int gcd(int a,int b)//最大公约数 
{
	int c=a%b;
	if(c==0)	return b;
	gcd(b,c);
}
queue<int> q;
int main()
{
    freopen("noi_online2020_ring.in","r",stdin);
    freopen("noi_online2020_ring.out","w",stdout);//贪心greed
    int i,j,k,l;//l-loop
    cin>>n>>m;
    for(i=0;i<n;i++)
    {
        cin>>a[i];
    }
    sort(a+0,a+n);
    a[n]=a[0];
    while(m--)
    {
        cin>>k;
        sum=0;
        if(k==0)
        {
            for(i=0;i<n;i++)
            {
                sum+=a[i]*a[i];
            }
            cout<<sum<<endl;
            continue;
        } 
        l=gcd(n,k);
        printf(" %d\n",l);
        for(i=0;i<n;i+=l)
        {
            for(j=0;j<l;j++)
            {
                q.push(a[i+j]);
//                cout<<' '<<a[i+j];
//                sum+=a[i+j]*a[i+(j+1)%l];
            }
            while(!q.empty())
            {
                q.pop();
            }
//            cout<<endl;
        }
        cout<<sum<<endl;
    }
    return 0;
}//\
*knowing your code is no good, it fills you with determination