1060. 愛丁頓數

英國天文學家愛丁頓很喜歡騎車。據說他爲了炫耀自己的騎車功力,還定義了一個“愛丁頓數”E,即滿足有E天騎車超過E英里的最大整數E。據說愛丁頓自己的E等於87。

現給定某人N天的騎車距離,請你算出對應的愛丁頓數E(<=N)。

輸入格式:

輸入第一行給出一個正整數N(<=105),即連續騎車的天數;第二行給出N個非負整數,代表每天的騎車距離。

輸出格式:

在一行中給出N天的愛丁頓數。

輸入樣例:
10
6 7 6 9 3 10 8 2 7 8
輸出樣例:
6

===========================================================================

思路:

先從大到小排序,然後從頭遍歷,若當前項的值大於下標+1則繼續向下遍歷,反之break。

由於題目的要求是“有E天”,因此不必在意順序。題目有些繞,需要多思考。

#include <iostream>
#include <iomanip>
#include <stdio.h>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <cctype>
#include <sstream>
#include <map>
#include <set>
#include <vector>
#include <queue>
#include <stack>
using namespace std;

bool cmp(int a, int b)
{
    return a > b;
}

int main()
{
    int a[200000]={0};
    int n,i,ans=0;
    cin>>n;
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    sort(a,a+n,cmp);
    for(i=0;i<n;i++)
    {
        if(a[i] > i+1)
            ans++;
        else
            break;
    }
    cout<<ans<<endl;
	return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章