90分,求助

P1102 A-B 数对

具体:92分,第三个点WA 数据: 200000 100000个1 100000个2 数据输出: 10000000000
by tangjiarui_550 @ 2023-09-29 16:01:14


有没有一种可能,你可以用stl?
by MrZombie_409 @ 2023-09-29 16:12:29


@[tangjiarui_50](/user/716270) 为什么你要把两段一模一样的代码写成两个函数?
by MrZombie_409 @ 2023-09-29 16:13:53


@[MrZombie_409](/user/837456) 1 谢谢dalao 2 老师不让用stl
by tangjiarui_550 @ 2023-09-29 16:15:12


我觉得你有可能是不开long long见祖宗了。
by MrZombie_409 @ 2023-09-29 16:16:37


题目上说的是c<=2的30次方。
by MrZombie_409 @ 2023-09-29 16:18:57


@[tangjiarui_50](/user/716270) 你开的int它就爆了。
by MrZombie_409 @ 2023-09-29 16:19:42


我也是个菜鸟,给个代码吧: ```` #include<cstdio> #include<algorithm> using namespace std; long long b[10000005]; int main(){ long long a = 0, c = 0, s = 0; scanf("%lld%lld", &a, &c); for(int i = 0; i < a; i ++){ scanf("%lld", &b[i]); } sort(b, b + a); for(int i = 0, l = 0, r = 0; i < a; i ++){ while(l < a && b[l] < b[i] + c){ l ++; } while(r < a && b[r] <= b[i] + c){ r ++; } s = s + r - l; } printf("%lld",s); return 0; }
by Gausswing @ 2023-09-29 16:29:03


@[tangjiarui_50](/user/716270) 事实上,ans要开long long,因为可能超过$2^{31}-1$
by WZRYWZWY @ 2023-09-30 07:37:00


|