Problem: Example

Input

3 2
3
1 2 1
2 3 2
3 3 1


Output

1

Solution (in CPP):

Solution:
#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> P;
#define INF (1e8)

int N,K,T;

P dat[(1<<19)];

void compute(int k,P p){
  if(p==P(0,0))return;
  if(dat[k]==P(0,0)){
    dat[k]=p;
  }else if(dat[k].second+1==p.first){
    dat[k].second=p.second;
  }else{
    dat[k]=P(INF,INF);
  }
}

void add(int a,int b,int x,int k=0,int l=0,int r=(1<<18)){
  if(b<=l || r<=a)return;
  if(a<=l && r<=b){
    compute(k,P(x,x));
    return;
  }
  
  
  compute(k*2+1,dat[k]);
  compute(k*2+2,dat[k]);
  dat[k]=P(0,0);
  int m=(l+r)/2;
  add(a,b,x,k*2+1,l,m);
  add(a,b,x,k*2+2,m,r);
}

int main(){
  scanf("%d %d %d",&N,&K,&T);
  for(int i=0;i<T;i++){
    int l,r,x;
    scanf("%d %d %d",&l,&r,&x);
    add(l-1,r,x);
  }
  for(int i=0;i<N;i++){
    add(i,i+1,0);
  }
  int ans=0;
  for(int i=0;i<N;i++){
    int p=i+(1<<18)-1;
    if(dat[p]==P(1,K))ans++;
  }
  printf("%d\n",ans);
  return 0;
}