顺序装桶后对原数组去重
A-B=C转化为A-C=B
顺序查找B加入答案
#include<bits/stdc++.h>
using namespace std;
int n,c,s[100000],t[1000000],top=1;
int main()
{
cin>>n>>c;
for(int i=1;i<=n;i++)
{
cin>>s[i];
}
sort(s+1,s+n+1);
t[1]++;
for(int i=2;i<=n;i++)
{
if(s[i]==s[i-1])t[top]++;
else top++,t[top]++;
}
/*for(int i=1;i<=n;i++)cout<<s[i]<<" ";
cout<<endl;
for(int i=1;i<=top;i++)cout<<t[i]<<" ";
*/
unique(s+1,s+n+1);
int sum=0;
/* for(int i=1;i<=n;i++)cout<<s[i]<<" ";
cout<<endl;*/
/*for(int i=1;i<=top;i++)cout<<s[i]<<" ";
cout<<endl;
for(int i=1;i<=top;i++)cout<<t[i]<<" ";
cout<<endl;*/
for(int i=1;i<=top;i++)
{
int ans=s[i]-c;
for(int j=1;j<=top;j++)
{
// cout<<ans<<"!="<<s[j]<<endl;
if(ans==s[j])
{
sum+=t[j];break;
}
}
}
cout<<sum;
}