队列:排队买票
作者:
羽笙
,
2024-05-20 06:28:52
,
所有人可见
,
阅读 7
队列模拟,把每个顾客下标加入队列,枚举时间进行模拟,
如果当前时刻该用户需求不为0,就需要加到末尾,
否为直接出队,记录时间
#include<bits/stdc++.h>
#define endl '\n'
#define int long long
#define x first
#define y second
using namespace std;
typedef pair<int,int> PII;
const int N = 1010,M = 1e6+10;
int n;
int q[N],front = 1,rear;
int a[N],b[N];
signed main()
{
cin.tie(0),cout.tie(0),ios::sync_with_stdio(0);
cin>>n;
for(int i = 1;i<=n;i++)cin>>a[i];
int cnt = n;
for(int i = 1;i<=n;i++)q[++rear] = i;
for(int time = 1;cnt;time++)
{
if(--a[q[front]] == 0)
{
b[q[front]] = time;
--cnt;
}
else
{
q[++rear] = q[front];
}
front++;
}
for(int i = 1;i<=n;i++)cout<<b[i]<<" ";
cout<<endl;
return 0;
}