0
已解决
许金夫
初级天翼
初级天翼
1548 游戏之金币增长
题目描述 Description
小王是一个竞技游戏爱好者,在这一年中进行了N盘游戏,每盘游戏中获得的金币数是不同的,现在他想统计在这么多盘游戏中有多少次两盘游戏金币的差值等于C。例如进行5盘游戏,要求算有多少次两盘游戏差值等于20的情况(10 30 50 24 32),答案是2.
输入描述 Input Description
第一行包括2个非负整数N和C,中间用空格隔开。
第二行有N个整数,中间用空格隔开,作为要求处理的那串数。
输出描述 Output Description
输出一行,表示该串数中包含的所有满足A-B=C的数对的个数。
样例输入 Sample Input
4 1
1 1 2 3
样例输出 Sample Output
3
数据范围及提示 Data Size & Hint
对于73%的数据,N <= 2000;
对于100%的数据,N <= 200000。
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,a[200010],c,s;
bool cmp(int x,int y)
{
return x>y;
}
int main()
{
cin>>n>>c;
for(int i=0;i<n;i++)
cin>>a[i];
sort(a,a+n,cmp);
for(int i=0;i<n-1;i++)
for(int j=i+1;j<n;j++)
{
if(a[i]-a[j]==c)
s++;
}
cout<<s;
return 0;
}
我都用了sort了居然还超时3个点
1
已采纳
黄子扬
初级天翼
初级天翼
1.数据范围N<200000 sort O(N log N) 一遍下来就会直接超时了
2.不需要排序,题目说了用桶,即用桶纪录两数之差的绝对值
3.最后输出桶中下标为20的变量的值
4.如果还不行就手动吸氧O2,O3(划掉
黄子扬在2020-05-02 07:33:59追加了内容
哦看错题了,不是输出下标为20的,而是下标为c的,抱歉
0
0
0
0