水果传送 洛谷似乎没有
联欢会开始了,同学们按对应的组别已整齐安静的就坐。此时小Z发现为同学们准备的水果还没有派发。各小组已紧密的连成了一排,于是他想了个办法,从两端将水果一个一个传送给各组,直到满足各组水果要求个数为止。假设每秒他只能在两端各传送一个水果,求T秒后各组中的水果数。
传送办法是:各组拿到水果后都向中间方向的相邻组传送(最中间的不用传),直到相邻组满足要求为止。举例:小组数M=5,各组要求水果数K=4。
#include<bits/stdc++.h>
using namespace std;
int m,k,t,i,c=1,mid;
int a[200005];
int main(){
cin>>m>>k>>t;
a[1]++,a[m]++,mid=m/2+1;
if(t>1)
for(i=2;i<mid;i++,c++){
a[i]++,a[m-i+1]++;
if(c==t)
break;
}
for(i=0;c<t&&a[1]<k;c++){
if(a[mid-i]>=k) i++;
a[mid-i]++,a[mid+i]++;
}
for(i=1;i<=m;i++)
cout<<a[i]<<" ";
}