什么是时尚?
Description
小朋友们喜欢追赶时尚潮流。 从算术的角度来说,我们可以认为: 每个时尚都有一个起始的吸引值L(1 <= L <= 50,000)。 每个小朋友都有一个时尚对抗值R_i (0 <= R_i <= 1,000,000)。 当一个时尚的吸引值大于等于一头小朋友的对抗值时,小朋友将会加入这个时尚潮流。 每个加入的小朋友将增加这个时尚K(1 <= K <= 2,500)点吸引值(从众心理,加入的小朋友越多越流行)。对于给定的N(1 <= N <= 100,000)个小朋友,请求出有多少头会加入给定的时尚。
Input
行1:三个空格隔开的整数:N,L和K 行2…N+1:第i+1行包含一个单独的整数,代表第i头小朋友的时尚对抗值:R_i
Output
行1:一个单独的整数,代表最终会加入这个时尚潮流的小朋友数目。
Examples
input
5 2 3
2
6
12
5
14
output
3
先给数组排序,再从a[1]开始拿吸引值与抵抗值相比较,若吸引值大于抵抗值,那么吸引值+=k。否则break。
完整代码
#include <bits/stdc++.h>
#define F(a,b,c)for(int a=b;a<=c;a++)
using namespace std;
long long n,l,k,a[500001],ans;
int main(){
cin>>n>>l>>k;
F(i,1,n)cin>>a[i];
sort(a+1,a+n+1);
if(a[1]>l){
cout<<0;
return 0;
}
F(i,1,n){
if(a[i]<=l)l+=k,ans++;
else break;
}
cout<<ans;
return 0;
}