CF413A Data Recovery题解

· · 题解

CF413A Data Recovery题解

博客食用更佳

题目传送门

这道题目比较简单,我就直接阐述我的思路了。

首先从这 m 个数中找出最大值和最小值(后文简写为 mn,mx)。

然后有几个条件要判断:

  1. 计算 mn 和 mx 与给定最小值和最大值之间相差的个数。如果 n-m 还小于这个个数,也就无法满足题目要求。

上述三种情况满足任意一种,即输出“Incorrect”; 都不满足,就输出“Correct”。

思路说完,上代码--

AC Code

#include<bits/stdc++.h>
using namespace std;
int n,m,s,a;
int main() {
    int mn=101,mx=0;
    cin>>n>>m>>s>>a;//输入
    for(int i=1; i<=m; i++) {
        int x;
        cin>>x;
        mn=min(mn,x),mx=max(mx,x);//遍历,寻找最大最小值
    }
    if(mn<s||mx>a||n-m<(s!=mn)+(a!=mx)) {//判断
        cout<<"Incorrect";
    } 
    else {
        cout<<"Correct";
    }
    return 0;//完美结束
}

后记:

这是我的第一篇题解,可能讲的有不足之处,还请大家谅解。另外,如果文中有错误也请指出,谢谢大家!