1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <iostream>

using namespace std;

const int MAXN = 1000000;
int tab[MAXN + 5][3];
int prefix_tab[MAXN + 5][3];

int main()
{
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	
	int n, m;
	
	cin>>n>>m;

	int l, r, k;
	for(int i=0; i<m; i++)
	{
		cin>>l>>r>>k;
		
		tab[l][k-1]++;
		tab[r+1][k-1]--;
	}
	
	prefix_tab[1][0] = tab[1][0];	
	prefix_tab[1][1] = tab[1][1];	
	prefix_tab[1][2] = tab[1][2];

	for(int i=2; i<=n; i++)
		for(int j=0; j<3; j++)
		{
			//cout<<"i: "<<i<<"  j: "<<j<<"    tab[i][j]: "<<tab[i][j]<<endl;
			prefix_tab[i][j] = prefix_tab[i-1][j] + tab[i][j];
		}
	
	int result = 0;
	
	for(int i=1; i<=n; i++)
		if (prefix_tab[i][0] && prefix_tab[i][1] && !prefix_tab[i][2])
			result++;
	
	cout<<result;
	cout.flush();

	return 0;
}