英國天文學(xué)家愛丁頓很喜歡騎車漫仆。據(jù)說他為了炫耀自己的騎車功力钓辆,還定義了一個(gè)“愛丁頓數(shù)” E 穆壕,即滿足有 E 天騎車超過 E 英里的最大整數(shù) E死陆。據(jù)說愛丁頓自己的 E 等于87招拙。
現(xiàn)給定某人 N 天的騎車距離,請你算出對應(yīng)的愛丁頓數(shù) E(≤N)翔曲。
輸入格式:
輸入第一行給出一個(gè)正整數(shù) N (≤10^5)迫像,即連續(xù)騎車的天數(shù);第二行給出 N 個(gè)非負(fù)整數(shù)瞳遍,代表每天的騎車距離闻妓。
輸出格式:
在一行中給出 N 天的愛丁頓數(shù)。
輸入樣例:
10
6 7 6 9 3 10 8 2 7 8
輸出樣例:
6
思路:
本題一開始覺得很難掠械,一開始想使用在線處理由缆,后來發(fā)現(xiàn)有點(diǎn)困難,之后發(fā)現(xiàn)使用一次排序以后猾蒂,從最大數(shù)的開始計(jì)數(shù)就行均唉,具體過程如下:
假設(shè)排序后為:2 3 6 6 7 7 8 8 9 10
從10往前開始數(shù),E=0肚菠,判斷10是否大于E+1(注意這里是E+1舔箭,一開始寫成E很多測試用例沒有通過)
如果大于,E++變?yōu)?蚊逢,然后判斷9是否大于2→8是否大于3→8是否大于4→7是否大于5→7是否大于6→6是否大于7层扶,到這里發(fā)現(xiàn)6小于7,退出循環(huán)烙荷,輸出E=6即可镜会。
代碼:
//1060 愛丁頓數(shù)
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
int N;//騎車天數(shù)
cin >> N;
vector<int> s(N);//存儲(chǔ)路程
for (int i = 0; i < N; i++)
{
cin >> s[i];
}
sort(s.begin(), s.end());//對其進(jìn)行排序
int E = 0;
for (int i = s.size() - 1; i >= 0; i--)
{
if (s[i] > E + 1)E++;
else break;
}
cout << E;
return 0;
}