Reference https://blog.csdn.net/lyy289065406/article/details/6642591
Corridor room number using the split, each "sub-corridor" are set to a counter that, every time +1, the largest number of X10 is the answer
#include<iostream> using namespace std; #define MAX_ROOM 400 #define TIME_UNIT 10 int ToOdd(int n){ return n%2==0?n-1:n; } int main(){ int n,nRoad; int From,To; int *FromId,*ToId; int MaxUseCount; int a,b; cin>>n; for(int i=0;i<n;i++){ cin>>nRoad; int UseCount[MAX_ROOM] = {0}; MaxUseCount = 0; FromId = new int[nRoad]; ToId = new int[nRoad]; for(int j=0;j<nRoad;j++){ cin>>From>>To; FromId[j] = From<=To?From:To; ToId[j] = To>From?To:From; FromId[j] = ToOdd(FromId[j]); ToId[j] = ToOdd(ToId[j]); for(int k=FromId[j];k<=ToId[j];k+=2){ UseCount[k]++; if(MaxUseCount<UseCount[k]){ MaxUseCount = UseCount[k]; } } } cout<<MaxUseCount*10<<endl; delete FromId; delete ToId; } return 0; }