1117 Eddington Number
题目大意
给定一组数字,这一组数组中有X个数字大于X,求最大的这个X
核心思路
将这一组数据读入数组v中,将数组v中的元素从大到小排序。
遍历数组v,当数组元素小于等于天数(下标i+1)时退出循环,并输出前一天(下标i)
代码
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
bool cmp1(int a,int b){
return a>b;
}
int main(){
//读入所有数据
int n;
cin>>n;
vector<int> v(n+1);
for(int i=0;i<n;i++){
int temp;
cin>>temp;
v.push_back(temp);
}
//将vector数组v中的数据从大到小排序
sort(v.begin(),v.end(),cmp1);
//遍历数组v,找到爱丁顿数
for(int i=0;i<v.size();i++){
if(v[i]<=i+1){
cout<<i<<endl;
break;
}
}
}