POJ2785(upper_bound)

#include"cstdio"
#include"algorithm"
using namespace std;
const int MAXN=4005;
int A[MAXN],B[MAXN],C[MAXN],D[MAXN];
int CD[MAXN*MAXN];
int n;
int main()
{
    while(scanf("%d",&n)!=EOF)
    {
        for(int i=0;i<n;i++)
            scanf("%d %d %d %d",&A[i],&B[i],&C[i],&D[i]);
        
        for(int i=0;i<n;i++)
            for(int j=0;j<n;j++) CD[i*n+j]=C[i]+D[j];
        sort(CD,CD+n*n);
        
        int res=0;
        for(int i=0;i<n;i++)
            for(int j=0;j<n;j++)
                res+=upper_bound(CD,CD+n*n,-(A[i]+B[j]))-lower_bound(CD,CD+n*n,-(A[i]+B[j]));
        printf("%d
",res);
        
            
    }
    return 0;
}
原文地址:https://www.cnblogs.com/program-ccc/p/4999709.html