Submission #1186165

#TimeUsernameProblemLanguageResultExecution timeMemory
1186165UnforgettableplChess Rush (CEOI20_chessrush)C++20
28 / 100
2096 ms23980 KiB
#include "arithmetics.h" #include <bits/stdc++.h> using namespace std; #define int long long const int modulo = 1e9+7; int32_t main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); int R,C,Q; cin >> R >> C >> Q; vector<vector<int>> DPbase(C+2,vector<int>(C+2)); for(int i=1;i<=C;i++)DPbase[i][i]=1; auto combine = [&](vector<vector<int>> &DP1,vector<vector<int>> &DP2){ vector<vector<int>> DP(C+2,vector<int>(C+2)); for(int inp=1;inp<=C;inp++){ for(int outp=1;outp<=C;outp++){ for(int k=1;k<=C;k++){ DP[inp][outp]+=DP1[inp][k]*DP2[k][outp]; DP[inp][outp]%=modulo; DP[inp][outp]+=DP1[inp][k-1]*DP2[k][outp]; DP[inp][outp]%=modulo; DP[inp][outp]+=DP1[inp][k+1]*DP2[k][outp]; DP[inp][outp]%=modulo; } } } return DP; }; function<vector<vector<int>>(int)> solve = [&](int x){ if(x==1)return DPbase; int mid = x>>1; auto curr = solve(mid); curr = combine(curr,curr); if(x&1)curr=combine(DPbase,curr); return curr; }; auto ans = solve(R); for(int i=1;i<=Q;i++){ char t;int st,ta;cin>>t>>st>>ta; cout << max(abs(ta-st),R-1) << ' ' << ans[st][ta] << '\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...