0
已解决
徐子玄
初级光能
初级光能
1610 problem(M-N=P)经验值:800
题目描述 Description
给你A 个从小到大排好序的整数,一个数P,要求在这A个整数中找两个数M和N,使得M-N=P,问你能找到多少种这样的方案?
输入描述 Input Description
第一行:2 个正整数:A,P。
第二行:N个顺序整数。
输出描述 Output Description
一个整数,表示该串数中包含的所有满足M-N=P 的数对的方案数。
样例输入 Sample Input
4 1 1 1 2 2
样例输出 Sample Output
4
数据范围及提示 Data Size & Hint
对于50% 的数据:A 的范围是[1…1,000]。
对于另外50% 的数据:A 的范围是[1…100,000]。
对于100% 的数据:P的范围是[1…1,000,000,000],A 个整数中每个数的范围是:[0…1,000,000,000]。
我的代码:
#include <iostream>
using namespace std;
int a[10000001],b[20000001];
int main()
{
int n,c,num=0;
cin>>n>>c;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=n;i++)
b[a[i]+c]++;
for(int i=1;i<=n;i++)
num+=b[a[i]];
cout<<num;
return 0;
}
0
已采纳
邹昊轩
资深光能
资深光能
循环(int i=1; i<=n; i++)
如果(b[a[i]-m])
{
s+=b[a[i]]*b[a[i]-m];
b[a[i]]=0;
}
输出<<s;
以上为核心代码,还有输入a[i],b[a[i]]++。其他定义什么的,你都会吧,不会@我。
输入n>>m;//在桶计数前
1
0
0