PKU 1083-Moving Tables

問題概要

廊下を通って荷物を運ぶことを考える。それぞれの荷物運びに関しては独立に廊下を共有しないものに関しては同時に運ぶことが出来る。
何回運べば、全ての荷物を運び終えることが出来るか。

解法

ある廊下の前を通る最大の数を求める

実装(C)

int main(){
  int T,N,a,b,i,j;
  scanf("%d",&T);
  for(;T--;){
    int r[200];
    int ans=0;
    memset(r,0,sizeof(r));
    scanf("%d",&N);
    for(i=0;i<N;i++){
      scanf("%d%d",&a,&b);
      a=(a-1)/2;b=(b-1)/2;
      if(a>b){
        j=b;
        b=a;
        a=j;
      }
      for(j=a;j<=b;j++){
        r[j]+=1;
        if(r[j]>ans)ans=r[j];
      }
    }
    printf("%d\n",ans*10);
  }
  return 0;
}