不用AC,帮我多过几个点就可以。
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1.5e4+10,M=4e4+10;
int n,m,t[N],x[M],ans[N][5];
vector<int> num;
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
scanf("%d",&x[i]);
t[x[i]]++;
}
num.push_back(-1);
for(int i=1;i<=n;i++)
if(t[i]) num.push_back(i);
int len=num.size()-1;
for(int i=1;i<=len-3;i++)
for(int j=i+1;j<=len-2;j++)
{
int k=upper_bound(num.begin(),num.end(),4*num[j]-3*num[i])-num.begin();
for(;(num[j]-num[i])%2==0&&k!=-1&&k<=len-1;k++)
{
int A=num[i],B=num[j],C=num[k],D=(num[j]-num[i])/2+num[k];
if(C==-1||D>n||D<=C||C<=B||B<=A||!t[C]||!t[D]) continue;
// printf("%d %d %d %d\n",A,B,C,D);
int Max=max(t[A],max(t[B],max(t[C],t[D])));
ans[A][1]+=Max-t[A]+1;ans[B][2]+=Max-t[B]+1;ans[C][3]+=Max-t[C]+1;ans[D][4]+=Max-t[D]+1;
}
}
for(int i=1;i<=m;i++)
printf("%d %d %d %d\n",ans[x[i]][1],ans[x[i]][2],ans[x[i]][3],ans[x[i]][4]);
return 0;
}