Language: C++


const double PI = 2 * acos(0.0);
#define rand shittttty_shit
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
mt19937_64 rng_64(chrono::steady_clock::now().time_since_epoch().count());
 
const string DIGITS = "0123456789";
const string ALPH = "abcdefghijklmnopqrstuvwxyz";
 
 
template <class T0, class T1>
inline ostream & operator << (ostream &out, pair<T0, T1> &a) {
    return out << "{" << a.first << ", " << a.second << "}";
}
 
template <class T0, class T1>
inline istream & operator >> (istream &in, pair<T0, T1> &a) {
    return in >> a.first >> a.second;
}
 
template <class T0, class T1, class T2>
inline ostream & operator << (ostream &out, tuple<T0, T1, T2> &a) {
    return out << "{" << get<0>(a) << ", " << get<1>(a) << ", " << get<2>(a) << "}";
}
 
template <class T0, class T1, class T2, class T3>
inline ostream & operator << (ostream &out, tuple<T0, T1, T2, T3> &a) {
    return out << "{" << get<0>(a) << ", " << get<1>(a) << ", " << get<2>(a) << ", " <<  get<3>(a) << "}";
}
 
template<class T>
inline ostream & operator << (ostream &out, vector<T> &a) {
    out << "[";
    fori (i, a.size())
        out << a[i] << vector<string>{", ", "]  "}[i + 1 == a.size()];
    return out;
}
 
 
void smain();
 
 
 
signed main() {
    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
#ifdef RUS_HOME
    freopen("input", "r", stdin);
    clock_t start = clock();
#endif
    cout << setprecision(12) << fixed;
    smain();
#ifdef RUS_HOME
    cout << "\n\n\n\nTOTAL EXECUTION TIME: " << float( clock () - start ) /  CLOCKS_PER_SEC << endl;
#endif
    return 0;
}
 
const int MOD=1e9+7,N=2e5+100;
int fact[N],inv[N];
 
int binpow(int a,int n){
    int ans=1;
    while(n){
        if(n&1)
            ans=ans*a%MOD;
        a=a*a%MOD;
        n>>=1;
    }
    return ans;
}
 
 
void init(){
    fact[0]=1;
    for(int i=1;i<N;i++){
        fact[i]=fact[i-1]*i%MOD;
    }
    inv[N-1]=binpow(fact[N-1],MOD-2);
    for(int i=N-2;i>=0;i--){
        inv[i]=inv[i+1]*(i+1)%MOD;
    }
}
 
int ncr(int n, int k){
    if(k>n)
        return 0;
    return fact[n]*inv[k]%MOD*inv[n-k]%MOD;
}
 
int cnt(pii a, pii b){
    if(b.first<a.first||b.second<a.second)
        return 0;
    int n=b.first-a.first+1;
    int m=b.second-a.second+1;
    return ncr(n+m-2,n-1);
}
 
void smain() {
    init();
    int h,w,n;
    cin>>h>>w>>n;
    vpi kek(n);
    for(int i=0;i<n;i++){
        cin>>kek[i].first>>kek[i].second;
    }
    kek.push_back({h,w});
    sort(ALL(kek));
    vi lol(SZ(kek));
    for(int i=0;i<SZ(kek);i++){
        lol[i]=cnt({1,1},kek[i]);
    }
 
    for(int i=0;i<SZ(kek)-1;i++){
        for(int j=i+1;j<SZ(kek);j++){
            lol[j]=(lol[j]-lol[i]*cnt(kek[i],kek[j])%MOD+MOD)%MOD;
        }
    }
 
    cout<<lol.back();
}

Compiler output:
a.cc:2:23: error: 'acos' was not declared in this scope
    2 | const double PI = 2 * acos(0.0);
      |                       ^~~~
a.cc:4:1: error: 'mt19937' does not name a type
    4 | mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
      | ^~~~~~~
a.cc:5:1: error: 'mt19937_64' does not name a type
    5 | mt19937_64 rng_64(chrono::steady_clock::now().time_since_epoch().count());
      | ^~~~~~~~~~
a.cc:7:7: error: 'string' does not name a type
    7 | const string DIGITS = "0123456789";
      |       ^~~~~~
a.cc:8:7: error: 'string' does not name a type
    8 | const string ALPH = "abcdefghijklmnopqrstuvwxyz";
      |       ^~~~~~
a.cc:12:8: error: 'ostream' does not name a type
   12 | inline ostream & operator << (ostream &out, pair<T0, T1> &a) {
      |        ^~~~~~~
a.cc:17:8: error: 'istream' does not name a type
   17 | inline istream & operator >> (istream &in, pair<T0, T1> &a) {
      |        ^~~~~~~
a.cc:22:8: error: 'ostream' does not name a type
   22 | inline ostream & operator << (ostream &out, tuple<T0, T1, T2> &a) {
      |        ^~~~~~~
a.cc:27:8: error: 'ostream' does not name a type
   27 | inline ostream & operator << (ostream &out, tuple<T0, T1, T2, T3> &a) {
      |        ^~~~~~~
a.cc:32:8: error: 'ostream' does not name a type
   32 | inline ostream & operator << (ostream &out, vector<T> &a) {
      |        ^~~~~~~
a.cc: In function 'int main()':
a.cc:45:5: error: 'ios' has not been declared
   45 |     ios::sync_with_stdio(0);
      |     ^~~
a.cc:46:5: error: 'cin' was not declared in this scope
   46 |     cin.tie(0); cout.tie(0);
      |     ^~~
a.cc:46:17: error: 'cout' was not declared in this scope
   46 |     cin.tie(0); cout.tie(0);
      |                 ^~~~
a.cc:51:13: error: 'setprecision' was not declared in this scope
   51 |     cout << setprecision(12) << fixed;
      |             ^~~~~~~~~~~~
a.cc:51:33: error: 'fixed' was not declared in this scope
   51 |     cout << setprecision(12) << fixed;
      |                                 ^~~~~
a.cc: At global scope:
a.cc:91:9: error: 'pii' was not declared in this scope
   91 | int cnt(pii a, pii b){
      |         ^~~
a.cc:91:16: error: 'pii' was not declared in this scope
   91 | int cnt(pii a, pii b){
      |                ^~~
a.cc:91:21: error: expression list treated as compound expression in initializer [-fpermissive]
   91 | int cnt(pii a, pii b){
      |                     ^
a.cc: In function 'void smain()':
a.cc:102:5: error: 'cin' was not declared in this scope
  102 |     cin>>h>>w>>n;
      |     ^~~
a.cc:103:5: error: 'vpi' was not declared in this scope
  103 |     vpi kek(n);
      |     ^~~
a.cc:105:14: error: 'kek' was not declared in this scope
  105 |         cin>>kek[i].first>>kek[i].second;
      |              ^~~
a.cc:107:5: error: 'kek' was not declared in this scope
  107 |     kek.push_back({h,w});
      |     ^~~
a.cc:108:10: error: 'ALL' was not declared in this scope
  108 |     sort(ALL(kek));
      |          ^~~
a.cc:108:5: error: 'sort' was not declared in this scope; did you mean 'short'?
  108 |     sort(ALL(kek));
      |     ^~~~
      |     short
a.cc:109:5: error: 'vi' was not declared in this scope
  109 |     vi lol(SZ(kek));
      |     ^~
a.cc:110:19: error: 'SZ' was not declared in this scope
  110 |     for(int i=0;i<SZ(kek);i++){
      |                   ^~
a.cc:111:9: error: 'lol' was not declared in this scope
  111 |         lol[i]=cnt({1,1},kek[i]);
      |         ^~~
a.cc:111:32: error: 'cnt' cannot be used as a function
  111 |         lol[i]=cnt({1,1},kek[i]);
      |                                ^
a.cc:114:19: error: 'SZ' was not declared in this scope
  114 |     for(int i=0;i<SZ(kek)-1;i++){
      |                   ^~
a.cc:116:13: error: 'lol' was not declared in this scope
  116 |             lol[j]=(lol[j]-lol[i]*cnt(kek[i],kek[j])%MOD+MOD)%MOD;
      |             ^~~
a.cc:116:52: error: 'cnt' cannot be used as a function
  116 |             lol[j]=(lol[j]-lol[i]*cnt(kek[i],kek[j])%MOD+MOD)%MOD;
      |                                                    ^
a.cc:120:5: error: 'cout' was not declared in this scope
  120 |     cout<<lol.back();
      |     ^~~~
a.cc:120:11: error: 'lol' was not declared in this scope
  120 |     cout<<lol.back();
      |           ^~~