问题标题: 酷町堂:1772 80分 求找错,RE了

0
0
已解决
曹博扬
曹博扬
初级天翼
初级天翼
#include<iostream>
#include<algorithm>
using namespace std;
long long n,cnt,c;
long long a[300010];
long long b[300010];
int main(){
    cin>>n>>c;
    for(int i=0;i<n;i++){
        cin>>a[i];
        b[a[i]]++;
    }
    for(int i=0;i<n;i++){
        int x=a[i]+c;
        cnt+=b[x];
    }
    cout<<cnt;
    return 0;
}//80分

快快快!!!!!!!!!!!!!!

求找错!!!

 


0
已采纳
朱优扬
朱优扬
中级天翼
中级天翼

my 思路:

    定义

    输入n;

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

        输入a[i]

    sort排序(对a数组排序)//注意头文件

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

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

            如果a[j]-a[i]>c

                跳出循环

            如果a[j]-a[i]==c

                cnt++;

        }

}

输出cnt;

 

0
汪恺恒
汪恺恒
中级启示者
中级启示者

因为输入的数据在int范围,所以这样容易数组越界

这题要用map

定义

map<int,int>b;//要加头文件#include<map>
int a[200005],n,c,ans;

输入

for(1至n){
        cin>>a[i];
        b[a[i]]++;
    }

统计

 for(1至n){
        ans+=b[a[i]+c];
    }

最后输出ans

0
我要回答