题目如图:
代码如下:如有错误请指出(谢谢!!)
/*2019蓝桥杯C语言A组 外卖店优先级
2 6 6
1 1
5 2
3 1
6 2
2 1
6 2
*/
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 100000
using namespace std;
int b[maxn]={0}; //b存放每个店的订单数量
int book[maxn]={0}; //判断外卖店的优先级在过程中有没有大于过5,如果有,赋值为1
int book2[maxn]={0}; //判断某个时刻哪个外卖店有订单,如果有,则为1
struct waimai
{
int ts;
int id;
}a[maxn];
bool cmp(waimai a,waimai b)
{
return a.ts<b.ts;
}
int main()
{
int n,m,t;
int count=0;
scanf("%d%d%d",&n,&m,&t);
for(int i=1;i<=m;i++)
{
scanf("%d%d",&a[i].ts,&a[i].id);
}
sort(a+1,a+m+1,cmp);
// for(int i=1;i<=m;i++)
// {
// printf("%d %d\n",a[i].ts,a[i].id);
// }
for(int i=1;i<=t;i++)
{
int x;
//需要双层for,对于每一个i都需要访问每所有订单
for(int j=1;j<=m;j++)
{
if(i==a[j].ts)
{
x=a[j].id;
b[x]+=2;
book2[x]=1;
}
}
for(int l=1;l<=n;l++)
{
if(book2[l]!=1)
{
if(b[l]>0)
b[l]--;
else
b[l]=0;
}
}
if(b[x]>5)
{
book[x]=1;
}
memset(book2,0,sizeof(book2));
}
/*for(int i=1;i<=n;i++)
{
if(book[i]==0&&b[i]>5)
count++;
if(book[i]==1&&b[i]>3)
count++;
printf("%d\n",b[i]);
}*/
//printf("店铺数量为:");
printf("%d\n",count);
return 0;
}