CF Gym 100187M Heaviside Function(二分)
题意:给你一个函数和一些系数,给你一堆询问,求函数值。
根据s的符号,分成两组讨论,函数值与比x小的系数数量有关,二分输出答案。
#include<cstdio> #include<algorithm> using namespace std; const int maxn = 200000+1; int A[maxn]; int B[maxn]; int sz1,sz2; int main() { // freopen("in.txt","r",stdin); int n; scanf("%d",&n); sz1 = sz2 = 0; while(n--){ int s,a; scanf("%d%d",&s,&a); if(s>0){ A[sz1++] = a; }else{ B[sz2++] = -a; } } sort(A,A+sz1); sort(B,B+sz2); int m; scanf("%d",&m); while(m--){ int x; scanf("%d",&x); printf("%d\n",upper_bound(A,A+sz1,x)-A+sz2-(lower_bound(B,B+sz2,x)-B)); } return 0; }