Submission #1150363

#TimeUsernameProblemLanguageResultExecution timeMemory
1150363knhatdevLinear Garden (IOI08_linear_garden)C++20
0 / 100
112 ms111072 KiB
#include <bits/stdc++.h> #define ii pair<int,int> #define fi first #define se second #define int long long #define task "" using namespace std; const int maxn = 1e6 + 5; const int max_diff = 3; int dp[maxn][2][2 * max_diff + 1]; int n, m, ans; string S; main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); if(fopen(task ".inp", "r")){ freopen(task ".inp", "r", stdin); freopen(task ".out", "w", stdout); } cin >> n >> m >> S; dp[1][0][1 + max_diff] = 1; dp[1][1][-1 + max_diff] = 1; for (int i = 2; i <= n; ++i) { for (int j = 0; j < 2; ++j) { for (int diff_prev = -max_diff; diff_prev <= max_diff; ++diff_prev) { if (dp[i-1][j][diff_prev + max_diff] == 0) continue; int new_diff_L = diff_prev + 1; if (new_diff_L >= -max_diff && new_diff_L <= max_diff) { dp[i][0][new_diff_L + max_diff] = (dp[i][0][new_diff_L + max_diff] + dp[i-1][j][diff_prev + max_diff]) % m; } int new_diff_P = diff_prev - 1; if (new_diff_P >= -max_diff && new_diff_P <= max_diff) { dp[i][1][new_diff_P + max_diff] = (dp[i][1][new_diff_P + max_diff] + dp[i-1][j][diff_prev + max_diff]) % m; } } } } int ans = 0; int current_diff = 0; for (int i = 0; i < n; ++i) { if (S[i] == 'L') { for (int diff = -max_diff; diff <= max_diff; ++diff) { if (abs(current_diff + diff) <= 2) { ans = (ans + dp[n - i][1][diff + max_diff]) % m; } } current_diff += 1; } else { current_diff -= 1; } } ans = (ans + 1) % m; cout << ans; }

Compilation message (stderr)

linear_garden.cpp:16:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   16 | main() {
      | ^~~~
linear_garden.cpp: In function 'int main()':
linear_garden.cpp:19:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   19 |         freopen(task ".inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
linear_garden.cpp:20:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   20 |         freopen(task ".out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
#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...