import java.util.*;
import static java.lang.System.out;
public class Main
{
static class JOJO
{
int A; //小球编号
int B; //小球索引
boolean C=true; //true表示向右,false表示向左
}
public static void main(String[] args)
{
Scanner YTY=new Scanner(System.in);
int n=YTY.nextInt(),L=YTY.nextInt(),t=YTY.nextInt();
JOJO[] JO=new JOJO[n];
for(int i=0;i<n;i++)
{
JO[i]=new JOJO();
JO[i].B=YTY.nextInt();
JO[i].A=i+1;
}
for(int i=0;i<t;i++) //大循环
{
for(int j=1;j<n;j++) //冒泡排序,根据索引,升序
{
for(int z=0;z<n-j;z++)
{
if(JO[z].B>JO[z+1].B)
{
int tmp=JO[z].B;
JO[z].B=JO[z+1].B;
JO[z+1].B=tmp;
tmp=JO[z].A;
JO[z].A=JO[z+1].A;
JO[z+1].A=tmp;
boolean jkl=JO[z].C;
JO[z].C=JO[z+1].C;
JO[z+1].C=jkl;
}
}
}
for(int p=0;p<n-1;p++) //判断两球是否索引相等
{
if(JO[p].B==JO[p+1].B) // 判断索引
{//判断两球左右方向是否相反
if(JO[p].C==true&&JO[p+1].C==false)
{
JO[p].C=false;
JO[p+1].C=true;
}
else if(JO[p].C==false&&JO[p+1].C==true)
{
JO[p].C=true;
JO[p+1].C=false;
}
}
}
for(int g=0;g<n;g++) //判断球是否在边界/0或者L
{
if(JO[g].B==0&&JO[g].C==false)
{
JO[g].C=true;
}
else if(JO[g].B==L&&JO[g].C==true)
{
JO[g].C=false;
}
}
for(int h=0;h<n;h++) //运行一次
{
if(JO[h].C==true)
{
JO[h].B+=1;
}
else if(JO[h].C==false)
{
JO[h].B-=1;
}
}
}
for(int i=1;i<=n;i++) //输出结果
{
for(int j=0;j<n;j++)
{
if(JO[j].A==i)
{
out.print(JO[j].B+" ");
break;
}
}
}
out.println();
}
}
CSP201803-02(JAVA)(碰撞的小球)(100分)
最新推荐文章于 2024-10-31 20:48:10 发布