模拟散列表84分,2,3tle求助

P1102 A-B 数对

```c #include<iostream> #include<cstdio> #include<vector> #include<cmath> #define int long long using namespace std; int n,m,s,l,i,j,a[3000000],x,ans,c; vector<int>v[1000000]; vector<int>cnt[1000000]; bool flag; signed main() { scanf("%lld%lld",&n,&c); for(i=1;i<=n;i++) { scanf("%lld",&a[i]); x=abs(a[i])%999983; l=v[x].size(); flag=true; for(j=0;j<l;j++) { if(v[x][j]==a[i]) { flag=false; cnt[x][j]++; break; } } if(flag) { v[x].push_back(a[i]); cnt[x].push_back(1); } } for(i=1;i<=n;i++) { x=abs(c+a[i])%999983; l=v[x].size(); s=0; for(j=0;j<l;j++) { if(v[x][j]==c+a[i]) { s=cnt[x][j]; break; } } ans+=s; } printf("%lld",ans); } ```
by K__ON @ 2022-08-18 21:25:33


|