質問番号: | 201803-2 |
質問名: | コリジョンボール |
制限時間: | 1.0秒 |
メモリ制限: | 256.0MB |
問題の説明: | 問題の説明 数値軸に長さL(Lは偶数)の線分があり、左端の点が原点にあり、右端の点が座標Lにあります。ボリュームに関係なく、ラインセグメントにはn個のボールがあります。最初は、すべてのボールが偶数座標にあります。速度方向は右で、速度は1秒あたり1単位の長さです。 促す すべてのボールの初期位置は偶数であり、線分の長さは偶数であるため、3つのボールが同時に衝突することはなく、ボールが線分セグメントの終わりに到達し、ボール間の衝突が整数であることが証明されます。 入力フォーマット 入力の最初の行には、スペースで区切られた3つの整数n、L、tが含まれ、ボールの数、ラインセグメントの長さ、t秒後に計算する必要のあるボールの位置を表します。 出力フォーマット 出力行にはスペースで区切られたn個の整数が含まれ、i番目の整数は最初の瞬間aiでのボールとt秒後の位置を表します。 入力例 3 10 5 出力例 7 9 9 サンプル概要 最初は、3つのボールの位置はそれぞれ4、6、8です。 入力例 10 22 30 出力例 6 6 8 2 4 0 4 12 10 2 データサイズと規則 すべての評価ケースで、1≤n≤100、1≤t≤100、2≤L≤1000、0 <ai <L。Lは偶数です。 |
import java.util.Scanner;
public class 碰撞的小球 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int L=sc.nextInt();
int T=sc.nextInt();
int[] a=new int[n];
for(int i=0;i<n;i++){
a[i]=sc.nextInt();
}
for(int t=0;t<T;t++){
for(int i=0;i<n;i++){
if(a[i]==L){
a[i]=(-1)*a[i];
}else if(a[i]==0){
a[i]=(-1)*a[i];
}
a[i]+=1;
}
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
if(Math.abs(a[i])==Math.abs(a[j])){
a[i]=(-1)*a[i];
a[j]=(-1)*a[j];
}
}
}
}
for(int i=0;i<n;i++){
System.out.print(Math.abs(a[i])+" ");
}
}
}