NC206867. Defeatthemonster
描述
多多最近迷上了网游,游戏中有一只大Boss非常厉害,多多想要组个团打败他。
游戏中有个奇怪的设定,就是打怪的团队人数越多,越容易战胜Boss。
但是如果队伍中的选手能力值差距超过 5 的话,那么Boss将会得到强化。
现在多多作为队长,想要在可选的玩家中挑选尽可能多的队员,但是他又不想让Boss得到强化。多多难住了,不知道怎么办了,你能帮帮他吗?
输入描述
第一行输入一个整数 N (1 ≤ N ≤ 2·105),代表多多可选的玩家数量。
第二行输入 N 个整数,代表每位玩家的能力值。
输出描述
输出一个整数,表示多多可选的最大玩家的数量。
示例1
输入:
6 1 10 17 12 15 2
输出:
3
说明:
示例2
输入:
10 1337 1337 1337 1337 1337 1337 1337 1337 1337 1337
输出:
10
C++ 解法, 执行用时: 71ms, 内存消耗: 1160K, 提交时间: 2021-05-22 19:52:42
#include<bits/stdc++.h> using namespace std; int a[200005]; int main() { int n; cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; sort(a+1,a+n+1); int nzk=0; for(int i=1;i<=n;i++) { int t=upper_bound(a+1,a+n+1,a[i]+5)-a-i; nzk=max(nzk,t); } cout<<nzk; }
C++14(g++5.4) 解法, 执行用时: 93ms, 内存消耗: 1252K, 提交时间: 2020-06-14 16:15:11
#include<bits/stdc++.h> using namespace std; int main() { int n,a[200005],flag,maxn=-1; cin>>n; for(int i=0;i<n;i++) cin>>a[i]; sort(a,a+n); for(int i=0;i<n;i++) { flag=upper_bound(a,a+n,a[i]+5)-a; maxn=max(flag-i,maxn); } printf("%d",maxn); }
Python3(3.5.2) 解法, 执行用时: 407ms, 内存消耗: 21752K, 提交时间: 2020-10-09 20:19:29
n=int(input()) arr=list(map(int,input().split())) arr.sort() m=0 l=0 r=0 while r<n: if arr[r]-arr[l]>5: l+=1 m=max(m,r-l+1) r+=1 print(m)