站外题
  • 板块题目总版
  • 楼主isJason
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/1/13 17:18
  • 上次更新2023/10/24 04:24:50
查看原帖
站外题
738674
isJason楼主2023/1/13 17:18
时空限制
CPU占用时长: 1秒内存使用限制: 512MB
问题描述
考虑一组n个不同的正整数a1,a2,...,an,它们的值在1到1000000之间。

给定一个整数x。写一个程序sumx计算这样的数对个数(a[i],a[j]),1<=i<j<=n并且a[i]+a[j]=x。
输入格式
第一行是一个整数n(1<=n<=100000)。

第二行有n个整数表示元素。

第三行是一个整数x(1<=x<=2000000)。

输出格式
输出一行包含一个整数表示这样的数对个数。

输入输出样例
样例1
输入样例
9
5 12 7 10 9 1 2 3 11
13

输出样例
3

数据范围与提示
n<=100000

x<=2000000

【样例说明】

不同的和为13的数对是(12, 1), (10, 3)和(2, 11)。


#include <bits/stdc++.h>
using namespace std;
int a[100011], h[2000011];
int main(){
    int n, x, ans=0;
    cin>>n;
    for(int i=0; i<n; i++){
        cin>>a[i];
        h[a[i]]++;
    }
    cin>>x;
    for(int i=1; i<n; i++){
        if(x-a[i]<0){
            continue;
        }
        ans+=h[x-a[i]];
    }
    ans/=2;
    cout<<ans;
    return 0;
}

样例过了,但是80分

2023/1/13 17:18
加载中...