2014年4月24日木曜日

会津大学オンラインジャッジ 問140 Bus Line

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0140

昔書いたコードがあるのだがあまりにデータ構造に頼ったあれなコードだったので
もう少しましなコードに直してみた。
このコードならバスラインを表現するdataの形が変わってもきちんと動く。
それにしてももっと短い人たちはどんな風にコードを書いてるのかな。



#include<stdio.h>
#include<vector>
void search(int s,int e){
      int data[]={9,8,7,6,5 ,4,3,2,1,0, 1,2,3,4,5 ,9,8,7,6};
      std::vector<int> sp,ep;
      for(int i=0;i<19;i++){
            if(s==data[i]){
                  sp.push_back(i);
            }
            if(e==data[i]){
                  ep.push_back(i);
            }
      }
      int p1,p2,len=100,d;
      for(int i=0;i<sp.size();i++){
            for(int j=0;j<ep.size();j++){
                  d=sp[i]-ep[j];
                  if(d>0&&d<len){
                        p1=sp[i];
                        p2=ep[j];
                        len=d;
                  }
            }
      }
      for(int i=p1;i>p2;i--){
            printf("%d ",data[i]);
      }
      printf("%d\n",data[p2]);
}

int main(){
      int n,s,e;
      scanf("%d",&n);
      while(n--){
            scanf("%d %d",&s,&e);
            search(s,e);
      }
}

0 件のコメント:

コメントを投稿