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
",upper_bound(A,A+sz1,x)-A+sz2-(lower_bound(B,B+sz2,x)-B));
    }
    return 0;
}
原文地址:https://www.cnblogs.com/jerryRey/p/4658160.html