Submission #418165

#TimeUsernameProblemLanguageResultExecution timeMemory
418165manolismiLinear Garden (IOI08_linear_garden)C++17
100 / 100
83 ms56004 KiB
#include <cstdio>
#include <algorithm>
using namespace std;

int N, M, dp[1000001][7][2];

int main()
{
  scanf("%d%d ",&N,&M);
  for (int k=1; k<6; k++) dp[N][k][0] = dp[N][k][1] = 1;
  for (int i=N-1; i>=0; i--)
    for (int k=1; k<6; k++)
    {
      dp[i][k][0] = (dp[i+1][min(k-1,1)][0] + dp[i+1][k+1][1])%M;
      dp[i][k][1] = (dp[i+1][k-1][0] + dp[i+1][max(k+1,5)][1])%M;
    }
    
  int ans=1, k=3, plant=-1;
  for (int i=1; i<=N; i++)
    if (getchar_unlocked()=='P')
    {
      ans = (ans+dp[i][plant==0?min(k-1,1):k-1][0])%M;
      k = plant==1 ? max(k+1,5) : k+1;
      plant = 1;
    }
    else
    {
      k = plant==0 ? min(k-1,1) : k-1;
      plant = 0;
    }
  printf("%d\n",ans);
}

Compilation message (stderr)

linear_garden.cpp: In function 'int main()':
linear_garden.cpp:9:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
    9 |   scanf("%d%d ",&N,&M);
      |   ~~~~~^~~~~~~~~~~~~~~
#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...