イギリスの天文学者エディントンはサイクリングが好きでした。彼はまた、それが「エディントン番号」E、Eの日が最大の整数マイルE E.上ライダーで満たされている定義し、乗り心地に自分のスキルを披露すると言われています エディントンは彼のE 87に等しいに言いました。
N SB今与えられた日のサイクリング距離、算出したE(≤N)に対応しますエディントン番号。
入力形式:
(≦10の最初の行の入力がNの整数正が与えられる。5)、即ち連続サイクリングの日数は、2行目に一日あたりサイクリング距離を表す整数N非負を与えます。
出力フォーマット:
行の日のエディントンN個所与。
サンプル入力:
10
。6. 6. 7 9 10 8 3 2 7 8
サンプル出力:
6
アイデア:配列を降順にソートして、スクラッチカウントから開始します。配列の添字は日数を表します。配列は一日ので、降順でソートされているので数は、あなたが出力答えをすることができ、1日のマイル数に応じた数よりも大きい場合。
例えば、被験試料は、降順でソート。
天数: 1 2 3 4 5 6 7 8 9 10
里程数:10 9 8 8 7 7 6 6 3 2
6日の最終的な出力6ように、6以上です。
#include <iostream>
#include <algorithm>
using namespace std;
bool cmp(int a, int b) { return a > b; }
int main()
{
int n;
int arr[99999] = {0};
cin >> n;
for (int i = 1; i <= n; i++)
cin >> arr[i];
sort(arr + 1, arr + n + 1, cmp); //从大到小排序
int ans = 0, i = 1;
while (ans < n && arr[i] > i)
{
ans++;
i++;
}
cout << ans;
return 0;
}