Submission #1170508

#TimeUsernameProblemLanguageResultExecution timeMemory
1170508ZeroCoolLinear Garden (IOI08_linear_garden)C++20
100 / 100
422 ms9356 KiB
#include <bits/stdc++.h> using namespace std;; #define ll long long #define ar array #define ld long double #define int long long #define all(v) v.begin(), v.end() const int N = 2e5 + 20; const int K = 469; const int LOG = 26; const int INF = 1e12; int MOD = 998244353; void mm(int &x){x = (x % MOD + MOD) % MOD;} void orz(){ int n; cin>>n>>MOD; string s; cin>>s; int A[n]; for(int i = 0;i < n;i++)A[i] = (s[i] == 'L' ? -1 : 1); int dp[2][5][5][5][2]; memset(dp, 0, sizeof dp); dp[0][2][2][2][0] = 1; int k = 0; for(int i = 0;i < n;i++, k ^= 1){ memset(dp[k ^ 1], 0, sizeof dp[k ^ 1]); for(int mn = 0;mn <= 4;mn++){ for(int mx = mn;mx <= min(4ll, mn + 2);mx++){ for(int x = mn;x <= mx;x++){ for(int u = 0;u < 2;u++){ for(auto j: {-1, 1}){ if(!u && j > A[i])continue; int nmn = min(mn, x + j); int nmx = max(mx, x + j); int nx = x + j; int nu = u | (j < A[i]); if(nmx - nmn > 2 || nmn < 0 || nmx > 4)continue; mm(dp[k ^ 1][nmn][nmx][nx][nu] += dp[k][mn][mx][x][u]); } } } } } } int ans = 1; for(int i = 0;i <= 4;i++){ for(int j = i;j <= min(4ll, i + 2);j++){ for(int x = i;x <= j;x++)mm(ans += dp[k][i][j][x][1]); } } cout<<ans; } signed main(){ios_base::sync_with_stdio(false);cin.tie(0); int t; //cin>>t; t = 1; while(t--)orz(); }
#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...
#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...
#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...