问题标题: 酷町堂:解决超时

0
0
已解决
刘心扬
刘心扬
初级守护
初级守护

#include<iostream>

#include<algorithm>

using namespace std;

long long n,c,cnt;

long long a[200005];

int main(){

cin>>n>>c;

for(int i=1;i<=n;i++){

cin>>a[i];

}

sort(a+1,a+n+1);

for(int i=1;i<=n;i++){

for(int j=i+1;j<=n;j++){

if(a[j]-a[i]==c){

cnt++;

}

}

}

cout<<cnt;

}

谁能解决一下我的超时问题


0
已采纳
陈九林
陈九林
高级守护
高级守护

这一题用桶应该就不会超时了。桶数组b存一下每个数的次出现数,然后枚举数x。每次cnt+=b[x]*b[x+c],就是排列组合。

 

时间复杂度:O(n)

 

 

P.S. 你这个发布整段代码,赶快结贴吧。

我要回答