
已知A=B+C,我们既可以找A,也可以找B,用 l 指向A,r指向B,这样我们统计a[l]=a[r]+c的个数;
对数组进行排序后,从左往右寻找A,这样r,l都是不断增大,统计相同A和B的个数,相乘得到组合
#include<stdio.h>
int a[200001];
void quick(int x,int y)
{
int i,j;
i=x;j=y;
int t=a[(x+y)/2];
while(i<=j)
{
while(a[i]<t) i++;
while(a[j]>t) j--;
if(i<=j)
{
int m=a[i];
a[i]=a[j];
a[j]=m;
i++;
j--;
}
}
if(x<j) quick(x,j);
if(i<y) quick(i,y);
}
int main()
{
int n,c,l=0,r=1;
long long num=0,numl,numr;
scanf("%d %d",&n,&c);
for(int i=1;i<=n;i++)
{
scanf("%d ",&a[i]);
}
quick(1,n);
while(r<=n)
{
numl=1;numr=0;
l++;
while(a[l]==a[l+1]&&l<=n)
{
l++;
numl++;
}
while(r<=n&&a[r]<a[l]+c)
{
r++;
}
while(r<=n&&a[r]==a[l]+c)
{
numr++;
r++;
}
num += numr * numl;
}
printf("%lld",num);
}
HTML列表<li></li>
有序列表,无序列表,自定义列表
有序列表<ol>(容器标签),包含列表内容标签(<li>)
type选择列表样式,默认为1,2...
<ol type='A'>
<li>abc</li>
<ol type='I'>
<li>abc</li>
<li>abc</li>
<ol>
<li>abc</li>
<ol>

效果

如果type选择A,那么第27,27个元素为AA,AB,类推
无序列表<ul>用法同上

自定义列表:<dl>(容器标签)<dd>(内容标签)<dt>(标题)

效果
