4613: 【GESP2403四级】做题
内存限制:128 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:1
解决:1
题目描述
⼩杨同学为了提高自己的实力制定了做题计划,在第$k$ 天时,他必须要完成$k$ 道题,否则他就会偷懒。
小杨同学现在找到了一个题库,一共有$n$ 套题单,每一套题单中有一定数量的题目。但是他十分挑剔,每套题单他只会使用一次,每一天也只能使用一套题单里的题目,之后那套题单就会被弃之不用。对于每套题单,他不必完成题单内所有的题。
那么问题来了,小杨同学最多会做题几天才偷懒呢?
小杨同学现在找到了一个题库,一共有$n$ 套题单,每一套题单中有一定数量的题目。但是他十分挑剔,每套题单他只会使用一次,每一天也只能使用一套题单里的题目,之后那套题单就会被弃之不用。对于每套题单,他不必完成题单内所有的题。
那么问题来了,小杨同学最多会做题几天才偷懒呢?
输入
第一行,$1$个数为 $n$,表示有多少套题单。
第二行,$n$个整数$a_1,a_2,...,a_n$ ,分别表示每套题单有多少道题。
第二行,$n$个整数$a_1,a_2,...,a_n$ ,分别表示每套题单有多少道题。
输出
输出一行,小杨同学偷懒前最多做题天数。
样例输入 复制
4
3 1 4 1
样例输出 复制
3
提示
#include<bits/stdc++.h>
#define maxn 1000006
using namespace std;
long long a[maxn];int n;
int main()
{
int m,ans=0;
cin>>n;m=n;int s=1;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
sort(a+1,a+n+1);
for(int j=1;j<=m;j++)
{
for(int k=s;k<=n;k++)
{
if(j<=a[k])
{
ans++;
a[k]=j;
s=k;
break;
}
}
}
cout<<ans;
return 0;
}