1. 程式人生 > >CSP考試 2018年3月第2題 碰撞的小球 C++實現

CSP考試 2018年3月第2題 碰撞的小球 C++實現

#include <iostream>
using namespace std;
int res(int para)
{
	if(para==1)
	{
		return -1;
	}else if(para==-1)
	{
		return 1;
	}
}
int main()
{
	int NUM;
	cin>>NUM;
	int len;
	cin>>len;
	int t;
	cin>>t;
	int loc[NUM];
	int dec[NUM];
	for(int i=0;i<NUM;i++)
	{
		cin>>loc[i];
		dec[i]=1;//右 
	}
	for(int i=0;i<t;i++)
	{
		for(int j=0;j<NUM;j++)
		{
			loc[j]=loc[j]+dec[j];
		}
		for(int m=0;m<NUM;m++)
		{
			for(int n=m+1;n<NUM;n++)
			{
				if(loc[m]==loc[n])
				{
					dec[m]=res(dec[m]);
					dec[n]=res(dec[n]);
				}
			}
			if(loc[m]==0)
			{
				dec[m]=1;
			}
			if(loc[m]==len)
			{
				dec[m]=-1;
			}
		}
		/*
		cout<<endl;
		for(int k=0;k<NUM;k++)
		{
			cout<<loc[k]<<" ";
		}
		cout<<endl;
		for(int k=0;k<NUM;k++)
		{
			cout<<dec[k]<<" ";
		}*/ 		 
	}
	//cout<<endl;
	for(int i=0;i<NUM;i++)
	{
		cout<<loc[i]<<" ";
	}
	return 0;
}