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
#include<bits/stdc++.h>
using namespace std;
int n,x,y,z,K[10][1000005],a;
vector<pair<int,int> > v[10];
pair <int,int> nowy,obecny;
void dodaj(int left,int right, int kolor);
int main()
{
    cin >> a >> n;
    for (int i = 1 ; i <= n ; i++)
    {
        cin >> x >> y >> z;
        v[z].push_back({x,y});
    }
    for (int i = 1 ; i <= 3 ; i++)
        sort(v[i].begin(),v[i].end());
    for (int kolor = 1; kolor <= 3 ; kolor++)
    {
        obecny = {0,0};
        for (int i = 0 ; i < v[kolor].size() ; i++)
        {
            nowy = {v[kolor][i].first,v[kolor][i].second};
            if(obecny.second < nowy.first){
                dodaj(obecny.first,obecny.second,kolor);
                obecny = nowy;
            }
            else
                obecny.second = max(obecny.second,nowy.second);
        }
        dodaj(obecny.first,obecny.second,kolor);
    }
    int w = 0;
    for (int i = 1 ; i <= a ; i++)
    {
        if(K[1][i] >0 && K[2][i] > 0 && K[3][i] == 0)
            w++;
    }
    cout << w;
}
void dodaj(int left,int right, int kolor)
{
   // cout << left <<" "<< right <<" "<< kolor <<"\n";
    for (int i = left ; i <= right ; i++)
    {
        K[kolor][i]++;
    }
}