http://poj.org/problem?id=2785
#include <iostream>
#include <stdio.h>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
const int MAX_N = 4006;
int a[MAX_N];
int b[MAX_N];
int c[MAX_N];
int d[MAX_N];
vector<int> v;
int main() {
int n;
while (scanf("%d",&n) != EOF) {
for (int x=1;n>=x;x++) {
scanf("%d %d %d %d",&a[x],&b[x],&c[x],&d[x]);
}
for (int i=1;n>=i;i++) {
for (int j=1;n>=j;j++) {
v.push_back(a[i]+b[j]);
}
}
sort(v.begin(),v.end());
long long ans=0;
for (int i=1;n>=i;i++) {
for (int j=1;n>=j;j++) {
int tmp=c[i]+d[j];
int tmp2=c[i]+d[j];
ans += upper_bound(v.begin(),v.end(),-tmp) - lower_bound(v.begin(),v.end(),-tmp2);
}
}
printf("%lld\n",ans);
}
}
沒有留言:
張貼留言