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 件のコメント:
コメントを投稿