m0_52360578
菜鸡小李
采纳率100%
2021-05-04 18:17

到底哪一种数据没考虑到怎么过不了测试?

扫码支付如今已普及应用在大型超市,街边小贩等多个消费支付的场景,刷脸支付也在商超零售场景逐渐应用,很多的大型超市引进自助收银系统,实现自助结账应用。

已知某超市有自助收银机m台,每件商品扫码时间都相等,均为1秒,现有n个顾客准备结账,初始顺序已经确定为1-n,编号i号顾客购买的商品件数为ci,当其中某名顾客扫完所有商品后,下一名排队等候付款的顾客马上使用刚空闲的这台自助收银机,即忽略支付时间和自助收银机换人的时间开销,则所有顾客完成结账需要多少时间?

输入格式:

输入第一行为两个正整数n和m(1 ≤ n ≤ 10000,1 ≤m≤ 20),中间用一个空格隔开,分别表示待结账顾客人数和自助收银机台数。 第二行n个整数c1、c2、…、cn(1 ≤ci≤ 100),每两个整数之间用一个空格隔开,ci表示i号顾客购买的商品件数。

输出格式:

输出只有一个正整数,即所有顾客完成结账的总时间。

输入样例1:

5 3
4 4 1 2 1

输出样例1:

4

输入样例2:

8 4
23 71 87 32 70 93 80 76

输出样例2:

163

样例1说明:

  第1秒,3名顾客扫码。第1秒结束时,1、2、3号顾客每人已扫码商品1件,3号顾客完成结账,4号顾客接替3号顾客开始扫码。第3秒结束时,1、2号顾客每人已扫码商品3件,4号顾客的已扫码商品2件。4号顾客完成结账,5号顾客接替4号顾客开始扫码。第4秒结束时,1、2号顾客每人已扫码商品4件,5号已扫码商品1件。1、2、5号完成结账,即所有人完成结账。总结账时间为4 秒。

#include<stdio.h> 
int main()
{
	int han(int *,int);
	int han2(int *,int);
	int n,m,i,j,t,s;
	scanf("%d %d",&n,&m);
	int arr1[10000],arr2[20];
	for(i=0;i<n;i++)
	scanf("%d",&arr1[i]);
	for(i=0;i<m;i++)
	{
		arr2[i]=arr1[i];
	}
	j=m;
	while(j<n)
	{
	arr2[han(arr2,m)]=arr2[han(arr2,m)]+arr1[j];
	j++;
	}
	printf("%d\n",arr2[han2(arr2,m)]);
	return 0;
}
int han(int *arr, int m )
{
	int i,temp=100,t;
    for(i=0;i<m;i++)
    {
    	if(arr[i]<temp)
    	{
		temp=arr[i];
		t=i;
		}
	}
	return t;
    
}
int han2(int *arr, int m )
{
	int i,temp=1,t;
    for(i=0;i<m;i++)
    {
    	if(arr[i]>=temp)
    	{
		temp=arr[i];
		t=i;
		}
	}
	return t;    
}
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答

  • technologist_16 CSDN技术专家团-天际的海浪 3天前

    是计算结果不对,还是计算超时?

    点赞 评论 复制链接分享
  • it_xiangqiang it_xiangqiang 昨天

    也许对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html
       也许对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10768339.html

    点赞 评论 复制链接分享
  • QA_Assistant 有问必答小助手 昨天

    您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

    点赞 评论 复制链接分享

相关推荐