Moving Tables
模拟题,用数组模拟房间前的过道是被占用的次数。每次输入就将2个房之间所有的房间过道占用次数加一,其实就是计算房间 重叠最多的次数为多少。
#include<iostream>
using namespace std;
int main()
{
int T,mark[402],j=0;
cin>>T;
while(j++!=T)
{
int i,N,s,t,real,front,max=-1;
for(i=0;i<401;i++)//初始化标记数组
mark[i]=0;
cin>>N;
i=0;
while(i++!=N)
{
int temp;
cin>>s>>t;
if(s>t) {temp=s;s=t;t=temp;}//对输入的2个数排序
real=0;front=0;
if(s%2!=0) front=s;//由于房间分在南北两边,所以要考虑奇偶性,对首尾下标进行修改
else front=s-1;
if(t%2!=0) real=t+1;
else real=t;
for(int k=front;k<=real;k++)//标记数组表示过道被占用次数
mark[k]+=1;
}
for(i=1;i<=400;i++)//取过道被占用最多次数为时间总长
{
if(mark[i]>max)
max=mark[i];
}
cout<<max*10<<endl;
}
return 0;
}