神犇快来!!!
by wuyou03 @ 2017-09-04 13:29:44
你也不说这是哪道题
by zzzty___ @ 2017-09-04 16:38:33
magic
by huzhaoyang @ 2017-09-04 16:57:20
我不是神犇
by yttt @ 2017-09-05 09:57:23
@[yetao](/space/show?uid=33705) 帮帮忙吧!!!
by wuyou03 @ 2017-09-05 13:18:42
@[左犊子](/space/show?uid=50787) magic 就这道题啊
by wuyou03 @ 2017-09-05 13:19:54
额不写结构体也没事吧,看得**眼
by Jigsaw_Killer @ 2017-09-06 23:22:52
```cpp
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
long long n,c[45678][4],m,t,o,l,r,wf,e,mid,p,d[45678][4];
long long c1=0,c2=0,c3=0,c0=0,temp,f[20000],temp2;
struct data
{long long num,x;};
data a[45678];
struct data2
{long long b,e,x,c;};
data2 b[45678];
int comp(data a,data b)
{return a.x<b.x;}
int main()
{
cin>>m>>n;
for (int i=1;i<=n;i++)
{scanf("%lld",&a[i].x);a[i].num=i;}
sort(a+1,a+n+1,comp);b[0].x=-1000;
for (int i=1;i<=n;i++)
if (b[t].x!=a[i].x)
{t++;b[t].b=i;b[t].e=i+1;b[t].x=a[i].x;b[t].c=1;}
else {b[t].e++; b[t].c++;}
for (int i=1;i<=m;i++)
{
l=1;r=t;mid=((l+r)>>1);
while(1)
{
if (b[mid].x==i)
{e=1;break;}
if (l>r) break;
if (b[mid].x>i)
r=mid-1;
if (b[mid].x<i)
l=mid+1;
mid=((l+r)>>1);
}
if (e){f[i]=mid;e=0;}
}
for (int i=1;i<=t;i++)
for (int j=i+1;j<=t;j++)
{temp=b[j].x-b[i].x;if(temp%2==0)
for (int k=t;k>j;k--) if (temp*3<b[k].x-b[j].x)
{
wf=temp+(b[k].x<<1);
if(wf%2) continue;
else wf=(wf>>1);
if (wf>m) continue;
else if(f[wf]>0)
{
mid=f[wf];
o=(b[i].c)*(b[j].c)*(b[k].c)*(b[mid].c);
c[b[i].b][0]+=o/b[i].c;
c[b[j].b][1]+=o/b[j].c;
c[b[k].b][2]+=o/b[k].c;
c[b[mid].b][3]+=o/b[mid].c;
c[b[i].e][0]-=o/b[i].c;
c[b[j].e][1]-=o/b[j].c;
c[b[k].e][2]-=o/b[k].c;
c[b[mid].e][3]-=o/b[mid].c;
}
}else break;}
for (int i=1;i<=n;i++)
{c0+=c[i][0];c1+=c[i][1];c2+=c[i][2];c3+=c[i][3];temp=a[i].num;
d[temp][0]=c0;d[temp][1]=c1;d[temp][2]=c2;d[temp][3]=c3;}
for (int i=1;i<=n;i++)
printf("%lld %lld %lld %lld\n",d[i][0],d[i][1],d[i][2],d[i][3]);
return 0;
}
三重80分,偷笑
```
by command_block @ 2017-09-23 19:34:29
```cpp
#include<iostream>
#include<cstdio>
using namespace std;
int n,m,k[40040],w[15050],a[15050],b[15050],c[15050],d[15050];
int main(){
cin>>n>>m;
for(int i=1;i<=m;++i){
scanf("%d",&k[i]);
w[k[i]]++;
}
for(int i=1;9*i<n;++i){
int s=0;
for(int xd=9*i+2;xd<=n;++xd){
s+=w[xd-9*i-1]*w[xd-7*i-1];
d[xd]+=w[xd-i]*s;
c[xd-i]+=w[xd]*s;
}
s=0;
for(int xa=n-9*i-1;xa>=1;--xa){
s+=w[xa+9*i+1]*w[xa+8*i+1];
a[xa]+=w[xa+2*i]*s;
b[xa+2*i]+=w[xa]*s;
}
}
for(int i=1;i<=m;++i)
printf("%d %d %d %d\n",a[k[i]],b[k[i]],c[k[i]],d[k[i]]);
}
AC代码
```
by 神犇的蒟蒻 @ 2017-09-25 23:04:33
```cpp
#include<bits/stdc++.h>
using namespace std;
int n,m,k[40040],w[15050],a[15050],b[15050],c[15050],d[15050];
int main(){
cin>>n>>m;
for(int i=1;i<=m;++i){
scanf("%d",&k[i]);
w[k[i]]++;
}
for(int i=1;9*i<n;++i){
int s=0;
for(int xd=9*i+2;xd<=n;++xd){
s+=w[xd-9*i-1]*w[xd-7*i-1];
d[xd]+=w[xd-i]*s;
c[xd-i]+=w[xd]*s;
}
s=0;
for(int xa=n-9*i-1;xa>=1;--xa){
s+=w[xa+9*i+1]*w[xa+8*i+1];
a[xa]+=w[xa+2*i]*s;
b[xa+2*i]+=w[xa]*s;
}
}
for(int i=1;i<=m;++i)
printf("%d %d %d %d\n",a[k[i]],b[k[i]],c[k[i]],d[k[i]]);
}
```
by 肖焕成 @ 2017-10-24 21:30:13