题目描述
在一个平面上放置有许多涂满颜色的幻灯片,这些幻灯片都是矩形而且是半透明的,所有的幻灯片的四边都与X轴或Y轴平行。我们可以给这些幻灯片的颜色编一个号,相同的数字对应相同的颜色。但是这些幻灯片可能会相互重叠,重叠部分的颜色就会混合变成另一种颜色,这个颜色值等于所有重叠幻灯片的颜色值之和。你的任务是找出这个平面上有多少种不同的颜色。
输入
输入第一行为一个整数N(1<=N<=100),N为平面上幻灯片的数量。接下来N行每行5个整数X1, Y1, X2, Y2, C,X1<X2,Y1<Y2,1<=C<=100,描述了一张幻灯片的情况,(X1,Y1)为左下角坐标,(X2,Y2)为右上角坐标,C为幻灯片颜色值。
输出
输出一个整数,为平面上出现的不同颜色的数量。
数据范围限制
对于50%的数据,0<=X1,Y1,X2,Y2<=10^2。
对于100%的数据,0<=X1,Y1,X2,Y2<=10^9。
Code
#include <cstdio>
#include <algorithm>
#include <iostream>
#define lowbit(x) ((x) & -(x))
using namespace std;
const int N = 100;
const int C = 100;
int n;
struct note
{
double x1,y1,x2,y2;
int c;
} a[N + 5];
double ind[N * 8 + 5];
int len,tot;
int sum[N * 8 + 5][N * 8 + 5];
int cnt[N * C + 5],ans;
int main()
{
freopen("b.in","r",stdin)