A21721.借教室 题解
2026-07-31 11:52:32
发布于:广东
23阅读
0回复
0点赞
整道题的思路如下(代码有详细注释):
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,m;
scanf("%d%d",&n,&m);
int day[n + 1];//下标从一开始,所以是n + 1(从0开始也可以,开n就够了)
for(int i = 1;i <= n;i++)
{
scanf("%d",&day[i]);
}
int num,start,end;//num :租借数量,start , end :租借开始、结束分别在第几天
for(int i = 1;i <= m;i++)
{
scanf("%d%d%d",&num,&start,&end);
//整个代码的核心操作
for(int j = start;j <= end;j++)
{
day[j] -= num;//在借教室的期间,每天都会少num个教室,即第start ~ 第end 天每天都要减一个 num
if(day[j] < 0)//如果教室总数是负数了,很明显就是不够用了
{
printf("-1\n%d",i);//根据题意先输出-1,再输出要修改的订单的号码,也就是i
return 0;//教室已经停止分配了,快下班!
}
}
}
printf("0");//如果有订单无法全部满足的话,早就已经在上面的双重循环return 0; 了,是没有办法运行到这里的,所以不需要立标杆,直接在这里输出0就可以放心提交了
return 0;
}
提醒:请各位不要复制!!!
这里空空如也






有帮助,赞一个