本地跑没问题,交上去#4莫名MLE
用哈希做的:
#include<bits/stdc++.h>
#define int long long
#define N 1000005
#define M 30000001
using namespace std;
int n,m,a[N],b[M],c[M],ans;
signed main(){
ios::sync_with_stdio(false);
// freopen("P1102_4.in","r",stdin);
cin>>n>>m;
for(int i=1,k;i<=n;i++){
cin>>a[i],k=a[i]%M;
while(b[k]){
if(b[k]==a[i]) break;
k++;
if(k==M) k=0;
}//取模哈希
b[k]=a[i];
c[k]++;
}
for(int i=1,k,h;i<=n;i++){
k=(m+a[i])%M,h=m+a[i];
while(b[k]){
if(b[k]==h){
ans+=c[k];
break;
}//查询
k++;
if(k==M) k=0;
}
}cout<<ans;
return 0;
}