Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- #include <cstring>
- #include <algorithm>
- #include <vector>
- using namespace std;
- int main(){
- int tc = 1,n;
- double x1[100],y1[100],x2[100],y2[100];
- vector<double> vx,vy;
- bool M[200][200];
- while(true){
- cin >> n;
- if(n == 0) break;
- vx.clear();
- vy.clear();
- for(int i = 0;i < n;++i){
- cin >> x1[i] >> y1[i] >> x2[i] >> y2[i];
- vx.push_back(x1[i]);
- vx.push_back(x2[i]);
- vy.push_back(y1[i]);
- vy.push_back(y2[i]);
- }
- sort(vx.begin(),vx.end());
- sort(vy.begin(),vy.end());
- int nx = unique(vx.begin(),vx.end()) - vx.begin();
- int ny = unique(vy.begin(),vy.end()) - vy.begin();
- memset(M,0,sizeof M);
- for(int k = 0;k < n;++k)
- for(int i = 0;i + 1 < nx;++i)
- for(int j = 0;j + 1 < ny;++j)
- if(x1[k] <= vx[i] && vx[i + 1] <= x2[k] && y1[k] <= vy[j] && vy[j + 1] <= y2[k])
- M[i][j] = true;
- double ans = 0;
- for(int i = 0;i + 1 < nx;++i)
- for(int j = 0;j + 1 < ny;++j)
- if(M[i][j])
- ans += (vx[i + 1] - vx[i]) * (vy[j + 1] - vy[j]);
- printf("Test case #%d\n",tc++);
- printf("Total explored area: %.2f\n\n",ans);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement