小科的学校门口有一条笔直的马路,可以把马路看做是一个长度为L的直线,马路上有很多用来种树的树坑,编号依次为0到L,每一编号的位置上都有1棵杨树,春天杨絮满天飞,非常不利于健康,所以学校要把门口的杨树都换掉,工作人员中有的人负责砍树有的人负责种树。砍树用“0 A B表示”,意思是砍树者每次从编号A到编号B处(包含A和B)连续砍掉每一棵树,就连树苗也不放过;种树用“1 C D”表示,意思是种树者每次从编号C到编号D(包含C和D)中凡是空穴(树被砍且还没种上树苗或树苗又被砍掉)的地方都补种上树苗;由于工作人员比较多,有的人种树有的人砍树,难免会出差错,有一些砍树者一不小心就把刚刚种上的树苗又砍掉了。
小科是个好奇的小朋友,他想知道最终校门外留下的树苗有多少棵?植树者种上又被砍掉的树苗有多少棵?请你帮忙计算一下吧。
输入格式
一共N+1行:
第一行,两个整数L和N,表示校门外原来有L+1棵树,并有N次砍树或种树的操作。
以下N行,每行3个整数C B E,用来描述一次砍树或植树操作
如果C为1表示从编号B到编号E所有空穴的地方都种上树苗
如果C为0表示从编号B到编号E连续砍掉每一个棵树 (包含树苗)
输出格式
共两行:
第一行一个整数,表示马路上最终留下的树苗的数目
第二行一个整数,表示在砍树和植树过程中种上又被砍掉的树苗的数目
输入输出样列
输入样例1:
10 3
0 2 6
1 1 8
0 5 7
输出样例1:
3
2
#include<bits/stdc++.h>
using namespace std;
co