其他分享
首页 > 其他分享> > cf896 B. Ithea Plays With Chtholly

cf896 B. Ithea Plays With Chtholly

作者:互联网

题意:

交互题。有n个位置,m次输入,和一个上限c。每次读入一个数x,输出把x放到哪个位置(可以覆盖)。目标是n个位置上都有数且单调不减。

\(1\le x\le c, 1\le c\le 1000,1\le n\cdot \lceil \frac c2 \rceil \le m \le 1000\)

思路:

先考虑一种朴素放法:对于每个x,从左到右找第一个空的或者比x大的位置放上去。那么每个位置最多放c次,n个位置不超过nc次。

考虑另一种放法:若x小于c/2,从左到右找第一个空的或者比x大的位置放上去;否则,从右到左找第一个空的或者比x小的位置放上去。这样任何时候数列都形如 “数数数空空数数数数”,每个位置最多放c/2次,能满足题目的范围。

const signed N = 1003;
int n, m, c, cnt, a[N];

signed main() {
    cin >> n >> m >> c;
    while(cnt < n) {
        int x; cin >> x;
        if(x <= c/2) {
            int p = 1; while(a[p] && a[p] <= x) p++;
            if(!a[p]) cnt++;
            a[p] = x; cout << p << endl;
        }
        else {
            int p = n; while(a[p] && a[p] >= x) p--;
            if(!a[p]) cnt++;
            a[p] = x; cout << p << endl;
        }
    }
}

标签:cf896,cnt,le,Plays,放上去,位置,数数,cin,Ithea
来源: https://www.cnblogs.com/wushansinger/p/16101284.html