Submission #554945

#TimeUsernameProblemLanguageResultExecution timeMemory
554945alextodoranLinear Garden (IOI08_linear_garden)C++17
100 / 100
18 ms10304 KiB
/** ____ ____ ____ ____ ____ ||a |||t |||o |||d |||o || ||__|||__|||__|||__|||__|| |/__\|/__\|/__\|/__\|/__\| **/ #include <bits/stdc++.h> using namespace std; typedef long long ll; const int N_MAX = 1000000; int N, MOD; bool A[N_MAX + 2]; int dp[N_MAX + 2][2]; // dp[n][false] = number of good strings of length n, // with the last double value different from the last value // dp[n][true] = number of good strings of length n, // with the last double value equal to the last value int main () { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> N >> MOD; string s; cin >> s; for (int i = 1; i <= N; i++) { A[i] = (s[i - 1] == 'P'); } for (int n = 2; n <= N; n++) { dp[n][true] = dp[n - 1][false] + dp[n - 2][true] + 1; dp[n][false] = dp[n - 1][true]; dp[n][true] %= MOD; } int answer = 0; int last = -1; for (int n = 1; n <= N; n++) { if (A[n] == 1) { int aux = answer; if (n > 1 && A[n - 1] == 0) { if (last != 0) { answer += dp[N - n + 1][false] + 1; } } else if (last != -1) { answer += dp[N - n + 1][0 == !last] + 1; } else { answer += (dp[N - n + 1][false] + dp[N - n + 1][true]) + 1; } answer %= MOD; } if (n > 1 && A[n - 1] == A[n]) { last = A[n]; } } answer++; answer %= MOD; cout << answer << "\n"; return 0; }

Compilation message (stderr)

linear_garden.cpp: In function 'int main()':
linear_garden.cpp:47:17: warning: unused variable 'aux' [-Wunused-variable]
   47 |             int aux = answer;
      |                 ^~~
#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...