1014 Waiting in Line

本文介绍了一个使用C语言实现的窗口调度算法。该算法通过读取输入数据来为不同的窗口分配资源,并计算每个任务完成的时间。此外,还考虑了当总容量小于任务数量时的任务分配策略,最终输出每个查询任务的完成时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<stdio.h>

int main()
{
	int Windows,Capacity,Num,Queries;
	scanf("%d%d%d%d",&Windows,&Capacity,&Num,&Queries);
	
	int T[Num];
	int i,j,TotalCapacity;
	for(i=0;i<Num;i++)
		scanf("%d",&T[i]);
		
	int A[Windows][Num]={},length[Windows]={},CurrentCost[Windows]={},Current[Windows],TotalCost[Windows]={},Finish[Num];
	
	TotalCapacity=Windows*Capacity;
	for(i=0,j=0;i<TotalCapacity && i<Num;i++,j=(j+1)%Windows)
	{
		A[j][i/Windows]=T[i];
		length[j]=i/Windows+1;
		TotalCost[j]+=T[i];
		Finish[i]=TotalCost[j];
	}
	if(TotalCapacity<Num)
	{
		for(i=0;i<Windows;i++)
		{
			CurrentCost[i]=A[i][0];
			Current[i]=0;
		}
		for(i=TotalCapacity;i<Num;i++)
		{
			int W=0;
			for(j=0;j<Windows;j++)
			{
				if(CurrentCost[j]<CurrentCost[W])
					W=j;
			}
			
			A[W][length[W]++]=T[i];
			TotalCost[W]+=T[i];
			Finish[i]=TotalCost[W];
			Current[W]++;
			CurrentCost[W]+=A[W][Current[W]];
		}
	}
	int Q;
	for(i=0;i<Queries;i++)
	{
		scanf("%d",&Q);
		if(Finish[Q-1]-T[Q-1]<540)
		{
			int hours,minutes;
			hours=8+Finish[Q-1]/60;
			minutes=Finish[Q-1]%60;
			printf("%02d:%02d\n",hours,minutes);
		}
		else
			printf("Sorry\n");
	}
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值