校门外的树(增强版)
2024年12月25日小于 1 分钟
#include <bits/stdc++.h>
using namespace std;
int L, N;
// 1: 有树
// 2: 有树苗
// 3: 空穴
int a[10000 + 5];
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cin >> L >> N;
for (int i = 0; i <= L; i++)
a[i] = 1;
int ans1 = 0; // 最终有多少棵树苗
int ans2 = 0; // 砍掉了多少棵树苗
while (N--)
{
int op, A, B, C, D;
cin >> op;
if (op == 0)
{
cin >> A >> B;
// 砍掉 A~B
for (int i = A; i <= B; i++)
{
if (a[i] == 2)
ans2++;
a[i] = 3;
}
}
if (op == 1)
{
cin >> C >> D;
// 种上 C~D
for (int i = C; i <= D; i++)
if (a[i] == 3)
a[i] = 2;
}
}
for (int i = 0; i <= L; i++)
if (a[i] == 2)
ans1++;
cout << ans1 << "\n"
<< ans2;
return 0;
}