Submission #1355070

#TimeUsernameProblemLanguageResultExecution timeMemory
1355070sanoChess Rush (CEOI20_chessrush)C++20
0 / 100
3 ms580 KiB
#include <bits/stdc++.h>
#define vec vector
#define For(i, n) for(ll i = 0; i < n; i++)
#define ll long long
#define mod 1000000007
using namespace std;
ll r, c, q;
vec<vec<ll>> comb(vec<vec<ll>>& a, vec<vec<ll>>&b){
    vec<vec<ll>> vys(c, vec<ll>(c, 0));
    For(i, c) For(j, c) For(k, c) vys[i][j] = (vys[i][j] + a[i][k] * b[k][j]) % mod;
    return vys;
}
signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cin >> r >> c >> q; r--;
    vec<vec<ll>> mat[32];
    For(i, 32) mat[i].assign(c, vec<ll>(c, 0));
    For(i, c) for(ll j = i-1; j < c && j <= i+1; j++) if(j >= 0) mat[0][i][j] = 1;
    For(i, 31) mat[i+1] = comb(mat[i], mat[i]);
    vec<vec<ll>> zac(c, vec<ll>(c, 0));
    For(i, c) zac[i][i] = 1;
    For(i, 32) if(r & (1<<i)) zac = comb(zac, mat[i]);
    For(i, q){
        ll c1, c2; cin >> c1 >> c2; c1--;c2--;
        cout << r << ' ' << zac[c2][c1] << endl;
    }
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...