题目链接:Codeforces 413A Data Recovery
题目大意:给出n,m,min和max,表示总共有n个数,已经存在了m个数,给出m个数,问说是否有可能满足这个集合的最大值和最小值分别为max和min.
解题思路:水题,只要给出的m个数字没有落在[min,max]这个区间之间即为不可行的,并且最大值和最小值都要出现过,如果没有出现过就要看n-m,即没有出现过的数字是否够补上空位。
#include <cstdio>
#include <cstring>
int main () {
int n, m, Max, Min, t;
bool fMax = false, fMin = false, flag = false;
scanf("%d%d%d%d", &n, &m, &Min, &Max);
for (int i = 0; i < m; i++) {
scanf("%d", &t);
if (t == Max)
fMax = true;
if (t == Min)
fMin = true;
if (t > Max || t < Min)
flag = true;
}
if (fMax == false && fMin == false) {
if (n - m < 2)
flag = true;
} else if (fMax == false || fMin == false) {
if (n - m < 1)
flag = true;
}
printf("%s\n", flag ? "Incorrect" : "Correct");
return 0;
}