碰撞的小球
90分
#include<iostream>
#include<algorithm>
using namespace std;
struct stua
{
int n_w,p_w;
int f;
};
bool cmp(stua a,stua b)
{
return a.p_w < b.p_w;
}
int main()
{
int i,j;
int n,L,t;
cin>>n>>L>>t;
stua a[n],tmp[n];
for(i=0;i<n;i++)
{
cin>>a[i].n_w;
a[i].p_w = a[i].n_w;
tmp[i].n_w = a[i].n_w;
a[i].f = 1;
}
sort(a,a+n,cmp);
int b[n];
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if( tmp[i].n_w == a[j].n_w )
{
b[i] = j;
}
}
}
for(i=0;i<t;i++)
{
for(j=0;j<n;j++)
{
if((a[j].p_w == L&&a[j].f==1)||(a[j].p_w == 0&&a[j].f==-1)||a[j].p_w == a[j-1].p_w||a[j].p_w == a[j+1].p_w)
{
a[j].f = -1*a[j].f;
}
a[j].n_w = a[j].n_w + a[j].f;
}
for(j=0;j<n;j++)
{
a[j].p_w = a[j].n_w;
}
}
for(i=0;i<n;i++)
{
cout<<a[b[i]].n_w<<" ";
}
return 0;
}
以上代码,两个样本点都对了,但我实在不知道哪里错了,会运行错误。sort()?
100分
#include<iostream>
using namespace std;
struct stua
{
int n_w,p_w;
int f;
};
int main()
{
int i,j,k;
int n,L,t;
cin>>n>>L>>t;
stua a[n],tmp[n];
for(i=0;i<n;i++)
{
cin>>a[i].n_w;
a[i].p_w = a[i].n_w;
tmp[i].n_w = a[i].n_w;
a[i].f = 1;
}
for(i=0;i<t;i++)
{
for(j=0;j<n;j++)
{
if((a[j].p_w == L&&a[j].f==1)||(a[j].p_w == 0&&a[j].f==-1))
{
a[j].f = -a[j].f;
}
else
{
for(k=0;k<n;k++)
{
if(a[j].p_w == a[k].p_w&&k!=j)
{
a[j].f = -a[j].f;
}
}
}
a[j].n_w = a[j].n_w + a[j].f;
}
for(j=0;j<n;j++)
{
a[j].p_w = a[j].n_w;
}
}
for(i=0;i<n;i++)
{
cout<<a[i].n_w<<" ";
}
return 0;
}
|