Language: C++

+#include <bits/stdc++.h>

struct Point{
  int x;
  int y;
};

bool operator<(Point a, Point b){
  return a.x+a.y<b.x+b.y;
}

long long mo=(long long)1e9+7;
long long fac[200000];
long long ifac[200000];

Point point[30001];
int H,W,N;

long long pow(long long a,long long n){
  long long ret=1;
  for(;n>0;n>>=1,a=a*a%mo){
    if(n%2==1){
      ret=ret*a%mo;

    }
  }
  return ret;
}

long long inv(long long a){
  return pow(a,mo-2);
}


void build(){
  fac[0]=1;
  ifac[0]=1;
  for(int i=1;i<200000;++i){
    fac[i]=fac[i-1]*i%mo;
    ifac[i]=inv(fac[i]);
  }
}

long long comb(int n,int k){
  return fac[n]*ifac[k]%mo*ifac[n-k]%mo;
}

long long dp[3001];

int main(){
  build();
  std::cin>>H>>W>>N;
  for(int i=0;i<N;++i){
    std::cin>>point[i].y>>point[i].x;
    --point[i].x;
    --point[i].y;
  }
  point[N].y=H-1;
  point[N].x=W-1;
  std::sort(point, point+N);
  for(int i=0;i<=N;++i){
    dp[i]=comb(point[i].y+point[i].x,point[i].x);
    for(int j=0;j<i;++j){
      int dx=point[i].x-point[j].x;
      int dy=point[i].y-point[j].y;
      if(dx<0||dy<0)continue;
      dp[i]=(dp[i]-dp[j]*comb(dx+dy,dx)%mo+mo)%mo;
    }
  }
  std::cout<<dp[N]<<std::endl;
  return 0;
}


Compiler output:
a.cc:1:2: error: stray '#' in program
    1 | +#include <bits/stdc++.h>
      |  ^
a.cc:1:1: error: expected unqualified-id before '+' token
    1 | +#include <bits/stdc++.h>
      | ^
a.cc:8:6: error: declaration of 'operator<' as non-function
    8 | bool operator<(Point a, Point b){
      |      ^~~~~~~~
a.cc:8:16: error: 'Point' was not declared in this scope; did you mean 'int'?
    8 | bool operator<(Point a, Point b){
      |                ^~~~~
      |                int
a.cc:8:25: error: 'Point' was not declared in this scope; did you mean 'int'?
    8 | bool operator<(Point a, Point b){
      |                         ^~~~~
      |                         int
a.cc:16:1: error: 'Point' does not name a type; did you mean 'int'?
   16 | Point point[30001];
      | ^~~~~
      | int
a.cc: In function 'int main()':
a.cc:52:8: error: 'cin' is not a member of 'std'
   52 |   std::cin>>H>>W>>N;
      |        ^~~
a.cc:1:1: note: 'std::cin' is defined in header '<iostream>'; this is probably fixable by adding '#include <iostream>'
  +++ |+#include <iostream>
    1 | +#include <bits/stdc++.h>
a.cc:54:10: error: 'cin' is not a member of 'std'
   54 |     std::cin>>point[i].y>>point[i].x;
      |          ^~~
a.cc:54:10: note: 'std::cin' is defined in header '<iostream>'; this is probably fixable by adding '#include <iostream>'
a.cc:54:15: error: 'point' was not declared in this scope; did you mean 'int'?
   54 |     std::cin>>point[i].y>>point[i].x;
      |               ^~~~~
      |               int
a.cc:58:3: error: 'point' was not declared in this scope; did you mean 'int'?
   58 |   point[N].y=H-1;
      |   ^~~~~
      |   int
a.cc:60:8: error: 'sort' is not a member of 'std'
   60 |   std::sort(point, point+N);
      |        ^~~~
a.cc:70:8: error: 'cout' is not a member of 'std'
   70 |   std::cout<<dp[N]<<std::endl;
      |        ^~~~
a.cc:70:8: note: 'std::cout' is defined in header '<iostream>'; this is probably fixable by adding '#include <iostream>'
a.cc:70:26: error: 'endl' is not a member of 'std'
   70 |   std::cout<<dp[N]<<std::endl;
      |                          ^~~~
a.cc:1:1: note: 'std::endl' is defined in header '<ostream>'; this is probably fixable by adding '#include <ostream>'
  +++ |+#include <ostream>
    1 | +#include <bits/stdc++.h>