NC13583. 年轮广场
描述
输入描述
多组输入 每组数据第一行输入n,m(1<=n,m<=1000),n表示年轮广场上位置的个数,m表示Mathon以及他的小伙伴总人数 第二行m个数,第i个A[i](1<=A[i]<=n)表示第i个人的位置。
输出描述
每组数据输出一行,表示所需要的最少时间。
示例1
输入:
5 3 1 4 5 3 2 1 3
输出:
1 1
说明:
第一组数据选择5为集合地点,第二组数据选择2为集合地点。C 解法, 执行用时: 24ms, 内存消耗: 324K, 提交时间: 2023-03-19 21:41:50
#include<stdio.h> #include<math.h> int main(){ int a,b,c,ans,i,j,n,m,A[1005],t; while(scanf("%d%d",&n,&m)!=EOF){ for(i=0;i<m;i++) scanf("%d",&A[i]); for(i=1,ans=n;i<=n;i++){ for(j=0,t=0;j<m;j++){ a=abs(A[j]-i); b=n-a; c=a<b?a:b; if(t<c) t=c; } if(ans>t) ans=t; } printf("%d\n",ans); } }
Python3 解法, 执行用时: 1524ms, 内存消耗: 4780K, 提交时间: 2023-04-23 19:43:01
while True: try: n,m=map(int,input().split()) lst=list(map(int,input().split())) lst.sort() mn=n*m for i in range(m): mn=min(mn,(max(lst)-min(lst))//2+(max(lst)-min(lst))%2) lst[i]=lst[i]+n print(mn) except: break
C++(clang++ 11.0.1) 解法, 执行用时: 17ms, 内存消耗: 424K, 提交时间: 2022-08-22 13:34:45
#include <bits/stdc++.h> using namespace std; int a[1001]; int main() { int n,m; while(cin>>n>>m) { for(int i=1;i<=m;i++)cin>>a[i]; sort(a+1,a+m+1); int jl=n-(a[m]-a[1])+1; for(int i=2;i<=m;i++) { jl=max(jl,a[i]-a[i-1]+1); } int t=(n-jl)/2+1; cout<<t<<endl; } }