## 主要题意:
> 有 $n$ 个任务,必须在 $s_i$ 到 $t_i$ 之间完成,求每个任务最大可以完成多久(优先前面的最大)。
## 思路
> 就拿一个变量记录当前时间,然后贪心选择 $a[i].t$ 和 $ a[i + 1].t$ 中的最小值,(应为至少也要给下一个任务留 $1$ 的时间),最后做减法,输出即可。
## 代码
> ```cpp
> #include <bits/stdc++.h>
> using namespace std;
>
> const int Maxn = 2e5 + 5;
>
> struct node
> {
> int s, t;
> } a[Maxn];
>
> int n, t, ti;
>
> int main()
> {
> ios::sync_with_stdio(0);//其实不用快读
> cin.tie(), cout.tie();//关同步流即可
> cin >> t;
> while (t--)
> {
> cin >> n;
> for (int i = 1; i <= n; i++)
> {
> cin >> a[i].s;
> }
> for (int i = 1; i <= n; i++)
> {
> cin >> a[i].t;
> }
> a[n + 1].s = a[n + 1].t = INT_MAX;//将最后一个赋值为最大
> ti = a[1].s;//记录时间
> for (int i = 1; i <= n; i++)
> {
> cout << min(a[i].t, a[i + 1].t) - ti << " ";
> ti = max(min(a[i].t, a[i + 1].t - 1), a[i + 1].s);//注意减一
> }
> cout << "\n";
> }
> return 0;//华丽的结束
> }
```