zoj1128-Atlantis

来源:互联网 发布:alpine mysql 编辑:程序博客网 时间:2024/05/17 04:47

大哭我四级...四级....怎么我四级就忘记报名了呢抓狂话说我还交钱了呢,我当初是怎么想的可怜

#include<iostream>#include<set>#include<map>#include<cstring>using namespace std;const int N=409;bool amap[N][N];struct node{double x1,x2,y1,y2;};int main(){int num,z=1;node lin[N];set<double> x,y;while(cin>>num,num){x.clear();y.clear();memset(amap,false,sizeof(amap));int k=0;while(num--){cin>>lin[k].x1>>lin[k].y1>>lin[k].x2>>lin[k].y2;x.insert(lin[k].x1);x.insert(lin[k].x2);y.insert(lin[k].y1);y.insert(lin[k].y2);k++;}map<int ,double > mapx,mapy;mapx.clear();mapy.clear();set<double >::iterator it;map<int ,double >::iterator ma;int i;for(i=0,it=x.begin();it!=x.end();++it,i++)mapx[i]=(*it);for(i=0,it=y.begin();it!=y.end();++it,i++)mapy[i]=(*it);int x1,x2,y1,y2;for(i=0;i<k;i++){for(int j=0;j<mapx.size();j++)if(lin[i].x1==mapx[j]){x1=j;break;}for(int j=0;j<mapx.size();j++)if(lin[i].x2==mapx[j]){x2=j;break;}for(int j=0;j<mapy.size();j++)if(lin[i].y1==mapy[j]){y1=j;break;}for(int j=0;j<mapy.size();j++)if(lin[i].y2==mapy[j]){y2=j;break;}for(int i=x1;i<x2;i++)for(int j=y1;j<y2;j++)amap[i][j]=true;}double sum=0.0;for(int i=0;i<mapx.size();i++)for(int j=0;j<mapy.size();j++)if(amap[i][j])sum+=(mapx[i+1]-mapx[i])*(mapy[j+1]-mapy[j]);cout.setf(ios::fixed);cout.precision(2);cout<<"Test case #"<<z++<<endl<<"Total explored area: "<<sum<<endl<<endl;}return 0;}


 

原创粉丝点击