求助卡常/优化时间
查看原帖
求助卡常/优化时间
243672
する楼主2021/10/14 13:55

90分

#include<bits/stdc++.h>
using namespace std;
#define maxn 15005
inline int read()
{
    bool nev= false;
    int  num= 0;
    char ch = getchar();
    while(ch<'0' || ch>'9')
    {
        if(ch=='-')
            nev=true;  
        ch=getchar();
    }
    while(ch>='0' && ch<='9')
    {
        num=(num<<1)+(num<<3)+(ch^48);
        ch=getchar();
    }
    if(nev) num=~num+1;
    return num;
}
inline void write(const int& x)
{
    if(x<0)
    {
        putchar('-');
        write(-x);
    }

    if(x<10) putchar(x+48);
    else
    {
        write(x/10);
        putchar(x%10+48);
    }
}
int n,m,x[maxn],ans[maxn][5],a[40005]; 
int main()
{
	n=read(),m=read();
	for(register int i(1);i<=m;++i)
	{
		a[i]=read();
		++x[a[i]];
	}
	for(register int len(2);(len*9)>>1 <=n;len+=2)
	{
		int a(len>>1);
		for(register int xa(1);xa<=n-a*9;++xa)
		{
			int xb(xa+len);
			if(x[xa]&&x[xb])
			{
				
				for(register int xc(xa+len*4+1);xc<=n-a;++xc)
				{
					int xd(xc+a);
					if(x[xd]&&x[xc])
					{
						ans[xa][1]+=x[xb]*x[xc]*x[xd];
						ans[xb][2]+=x[xa]*x[xc]*x[xd];
						ans[xc][3]+=x[xa]*x[xb]*x[xd];
						ans[xd][4]+=x[xa]*x[xb]*x[xc];
//						cout<<xa<<"	"<<xb<<"	"<<xc<<"	"<<xd<<"aaaaa"<<endl;
					}
				}
			}
		}
	}
	for(int i(1);i<=m;++i)
	{
		write(ans[a[i]][1]);
		fputs(" ",stdout);
		write(ans[a[i]][2]);
		fputs(" ",stdout);
		write(ans[a[i]][3]);
		fputs(" ",stdout);
		write(ans[a[i]][4]);
		fputs("\n",stdout);
	}
	return 0;
}
2021/10/14 13:55
加载中...