Submission #603011

#TimeUsernameProblemLanguageResultExecution timeMemory
603011JoshcLinear Garden (IOI08_linear_garden)C++11
100 / 100
488 ms2248 KiB
#include <bits/stdc++.h> using namespace std; char c[1000005]; int n, m, dp[2][6][3][5][2]; int main() { scanf("%d%d", &n, &m); for (int i=1; i<=n; i++) scanf(" %c", &c[i]); int x = (n+1)&1; fill(&dp[(n+1)&1][0][0][0][0], &dp[(n+1)&1][5][0][0][0], 1); for (int pos=n; pos; pos--) { for (int l=0; l<=2; l++) { for (int r=2; r<=4; r++) { for (int b=l; b<=r; b++) { for (int islower=0; islower<2; islower++) { int& res = dp[pos&1][b][l][r][islower]; res = 0; if (r-b <= 1) res = dp[(pos+1)&1][b-1][min(b-1, l)][r][islower || c[pos] == 'P']; if (b-l <= 1 && (islower || c[pos] == 'P')) res = (res+dp[(pos+1)&1][b+1][l][max(b+1, r)][islower])%m; } } } } } printf("%d\n", dp[1][2][2][2][0]); }

Compilation message (stderr)

linear_garden.cpp: In function 'int main()':
linear_garden.cpp:10:9: warning: unused variable 'x' [-Wunused-variable]
   10 |     int x = (n+1)&1;
      |         ^
linear_garden.cpp:8:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
    8 |     scanf("%d%d", &n, &m);
      |     ~~~~~^~~~~~~~~~~~~~~~
linear_garden.cpp:9:35: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
    9 |     for (int i=1; i<=n; i++) scanf(" %c", &c[i]);
      |                              ~~~~~^~~~~~~~~~~~~~
#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...