题解 | #编程题2#

编程题2

http://www.nowcoder.com/practice/43068a1013b4417a85c2c2ce8b18159e

using namespace std;

int main() {
    int n, x;
    cin >> n >> x;
    vector<long long>a(n + 1);
    for (int i = 1; i <= n; ++i) cin >> a[i];
    long long cnt = 0;//所清空房间的原来的人数
    long long mina = a[1];
    for (int i = 1; i <= n; ++i) 
    	mina = min(a[i], mina);//求最小值,即转了几圈(为0说明没转够一圈)
    if (mina > 0) {
        cnt += mina * n;
        for (int i = 1; i <= n; ++i) a[i] -= mina;//整体减去圈数,避免后面的重复计算
    }
    while (a[x] != 0) {//寻找原房间
        ++cnt;
        --a[x];
        x = x == 1 ? n  : x - 1;
    }
    a[x] = cnt;//把人员归还到原房间
    for (int i = 1; i <= n; ++i)cout << a[i] << ' ';
    return 0;
}
全部评论

相关推荐

谁知道呢_:要掉小珍珠了,库库学三年,这个结果
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务