链接:http://codeforces.com/problemset/problem/260/C
思路:模拟往回推的过程,正常肯定超时,所以可以先将数据中的最小值取出,将每一个数都减去这个最小值,再模拟就好
#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll a[100005];
int main()
{
ll n,m,mi=10e9+10,t=0;
scanf("%lld%lld",&n,&m);
for(int i=0;i<n;i++)
{
scanf("%lld",a+i);
if(a[i]<mi)
{
mi=a[i];
t=i;
}
}
for(int i=0;i<n;i++)
a[i]-=mi;
ll i=m-1,cnt=0;
while(a[i]!=0)
{
a[i--]--;
cnt++;
if(i==-1)i=n-1;
}
a[i]=mi*n+cnt;
for(int i=0;i<n;i++)
printf("%I64d ",a[i]);
return 0;
}