[CF988A] Diverse Team

Links:
CF988A Diverse Team - Codeforces
CF988A Diverse Team - 洛谷

翻译

现在给你 k (1 <= k <= 100)个数。
在其中选取 n 个使得选到的每个数的数值都不相同。
如果有多种情况那么输出任意一种都可。

简单贪心题!

从第一个开始枚举 \(a_1\) ~ \(a_n\),如果 b[\(a_i\)] 没有打过标记的话就取,否则就不取;接着在b数组中打上这个数值被取过的标记

#include <bits/stdc++.h>

const int maxn = 110;
int n, m, a[maxn], b[maxn], c[maxn];

int main() {

    scanf("%d%d", &n, &m);
    for (int i = 1; i <= n; i++)
         scanf("%d", &a[i]);

    int cnt = 0;
    for (int i = 1; i <= n; i++)
        if (!b[a[i]]) {
            c[++cnt] = i;
            b[a[i]] = 1;
        }

    if (cnt >= m) {
        printf("YES\n");
        for (int i = 1; i <= m; i++)
            printf("%d ", c[i]);
    } else {
        printf("NO");
    }

    return 0;
}
添加新评论

0%