NC229310. 空调遥控
描述
输入描述
第一行两个数n,p(1≤n,p≤1000000),含义如题面描述
接下来一行n个数a[i](1≤a[i]≤1000000)表示每个队员的温度诉求
输出描述
输出一个数字,表示最多有多少队员同时进入训练状态
示例1
输入:
6 2 1 5 3 2 4 6
输出:
5
说明:
温度调成3或4,都可以满足5名队员同时进入训练状态C++(g++ 7.5.0) 解法, 执行用时: 424ms, 内存消耗: 4416K, 提交时间: 2023-04-01 16:18:32
#include<bits/stdc++.h> using namespace std; const int N=1e6+10; int a[N]; int n,p; int main() { cin>>n>>p; for(int i=1;i<=n;i++) { cin>>a[i]; } sort(a+1,a+n+1); int i=1,j=2; int ma=0; for(j=2;j<=n;j++) { while(a[j]-a[i]>2*p) i++; ma=max(ma,j-i+1); } cout<<ma<<endl; return 0; }
C++ 解法, 执行用时: 385ms, 内存消耗: 12152K, 提交时间: 2021-11-07 19:15:24
#include <stdio.h> int main() { int n,m,t=0,max=0; scanf("%d %d",&n,&m); int a[3000005]={0},b; for(int i=0;i<n;i++){ scanf("%d",&b); a[b]++; } for(int i=1;i<=n;i++){ for(int j=i;j<2*m+i+1;j++){ t+=a[j]; } if(t>max) max=t; t=0; } printf("%d",max); return 0; }
Python3 解法, 执行用时: 1796ms, 内存消耗: 123792K, 提交时间: 2021-11-12 21:32:00
n=input().split() l=input().split() a,b=int(n[0]),int(n[1]) l=[int(i) for i in l] l.sort() r=0 p,h=0,0 while h<len(l): if l[h]<=l[p]+2*b: h+=1 r=max(r,h-p) else: p+=1 print(r)