# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
121450 | TadijaSebez | Linear Garden (IOI08_linear_garden) | C++11 | 26 ms | 6248 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <stdio.h>
const int N=1000050;
int mod,po[N];
int CountAll(int n){ return (po[n/2+1]+po[(n+1)/2]-2+mod)%mod;}
int CountLo(int n){ return po[n/2];}
int CountHi(int n){ return po[n/2];}
int CountMid(int n){ return po[(n+1)/2];}
char s[N];
int max(int a, int b){ return a>b?a:b;}
int min(int a, int b){ return a>b?b:a;}
int main()
{
int n,i;
scanf("%i %i",&n,&mod);
scanf("%s",s+1);
int cnt=0,Min=0,Max=0,sol=0;
po[0]=1;
for(i=1;i<=n;i++) po[i]=po[i-1]*2%mod;
for(i=1;i<=n;i++)
{
if(s[i]=='L') cnt++,Max=max(Max,cnt),Min=min(Min,cnt);
else
{
if(Max-Min==2)
{
if(cnt==Min)
{
sol+=CountMid(n-i);
if(sol>=mod) sol-=mod;
}
else if(cnt!=Max)
{
sol+=CountHi(n-i);
if(sol>=mod) sol-=mod;
}
}
else if(Max-Min==1)
{
if(cnt==Min)
{
sol+=CountMid(n-i)+CountHi(n-i)-1+mod;
while(sol>=mod) sol-=mod;
}
else
{
sol+=CountHi(n-i);
if(sol>=mod) sol-=mod;
}
}
else
{
sol+=CountMid(n-i)+CountHi(n-i)-1+mod;
while(sol>=mod) sol-=mod;
}
cnt--;
Max=max(Max,cnt);
Min=min(Min,cnt);
//printf("%i: %i\n",i,sol);
}
}
sol++;
if(sol>=mod) sol-=mod;
printf("%i\n",sol);
return 0;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |