rt
原题:
给定n个矩形,这些矩形可能叠加,也可能不叠加,现在给你一个数字k,问有多少对矩阵的重叠面积大于k。小明很贪玩,所以小明现在希望你可以帮助他解决这个问题。
输入
第一行输入一个n(n<=1000),表示矩形的个数
接下来n行,每行四个数字,分别表示每个矩形左下角的坐标和右上角的坐标。(0<=坐标范围<=10000)
接着输入一个Q,表示询问的个数
接下来Q行,每行一个数字k(0<=k<=100000000),表示询问有多少对矩阵的重叠面积大于k
输出
对于每个询问输出一个整数。
输入样例
2
1 2 2 3
1 2 2 4
1
0
输出样例
1
本人代码:
#include<bits/stdc++.h>
using namespace std;
struct node{
int x_1, y_1;
int x_2, y_2;
} N[1010];
int M[1000010];
int solve(int i, int j){
int x_1 = max(N[i].x_1, N[j].x_1);
int y_1 = min(N[i].y_1, N[j].y_1);
int x_2 = max(N[i].x_2, N[j].x_2);
int y_2 = min(N[i].y_2, N[j].y_2);
return max(y_1-x_1,0) * (0,y_2-x_2);
}
int main(){
int n;
cin>> n;
for(int i = 0; i < n; i++)
cin>> N[i].x_1 >> N[i].y_2 >> N[i].x_2 >> N[i].y_2;
int t = 0;
for(int i = 0; i < n -1; i++)
for(int j = i + 1; j < n; j++)
M[t++] = solve(i, j);
sort(M, M + t);
int Q, k;
cin>> Q;
while(Q--){
cin>> k;
int r = upper_bound(M, M + t, k) - M;
cout<< t -r << endl;
}
return 0;
}
此代码输出为0
好多次都WA了,想破脑袋也没想出来,求指点错误