哪位大佬可知道蒟蒻的代码错在哪里了吗?万分感谢!!!Orz Orz Orz
#include<cstdio>
#include<algorithm>
using namespace std;
const int M=40005,N=20005;
int n,m,x[M];
int bucket[N],ans[M][6];
int main()
{
scanf("%d%d",&n,&m);
for (int i=1;i<=m;i++)
{
scanf("%d",&x[i]);
bucket[x[i]]++;
}
//solve c and d
for (int A=1;A<=n/9;A++)
{
int bi=2*A+1,sum=0;
for (int di=9*A+1;di<=n;di++)//枚举D同时确定C
{
if (bucket[di]>0&&bucket[di-A]>0)
{
ans[di][4]+=sum;
ans[di-A][3]+=sum;
for (;bi<di-7*A;bi++)//枚举b同时确定A
if (bucket[bi]>0&&bucket[bi-2*A]>0)
{
sum=sum+bucket[bi]*bucket[bi-2*A];
int total=bucket[di]*bucket[di-A]*bucket[bi]*bucket[bi-2*A];
ans[di][4]+=total/bucket[di];
ans[di-A][3]+=total/bucket[di-A];
// ans[bi][2]+=total/bucket[bi];
// ans[bi-2*A][1]+=total/bucket[bi-2*A];
}
}
}
}
//solve a and b
for (int A=1;A<=n/9;A++)
{
int di=n,sum=0;
for (int bi=n-7*A-1;bi>2*A;bi--)
{
if (bucket[bi]>0&&bucket[bi-2*A]>0)
{
ans[bi][2]+=sum;
ans[bi-2*A][1]+=sum;
for (;di>7*A+bi;di--)
{
if (bucket[di]>0&&bucket[di-A]>0)
{
sum+=bucket[di]*bucket[di-A];
int total=bucket[di]*bucket[di-A]*bucket[bi]*bucket[bi-2*A];
ans[bi][2]+=total/bucket[bi];
ans[bi-2*A][1]+=total/bucket[bi-2*A];
}
}
}
}
}
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]);
printf("%d %d %d %d",ans[x[m]][1],ans[x[m]][2],ans[x[m]][3],ans[x[m]][4]);
return 0;
}