Submission #328911

# Submission time Handle Problem Language Result Execution time Memory
328911 2020-11-18T12:52:53 Z sofapuden Linear Garden (IOI08_linear_garden) C++14
100 / 100
114 ms 2440 KB
#include <bits/stdc++.h>
#define int ll

using namespace std;

typedef long long int;

int M;

int po(int a, int b){
int _a = a, _b = b;
int ret = 1;
while(_b){
if(_b&1){ret*=_a;ret%=M;}
_a*=_a;
_a%=M;
_b>>=1;
}
return ret;
}

signed main(){
ios_base::sync_with_stdio(0); cin.tie(0);
int n; cin >> n >> M;

string s; cin >> s;

int l = 0, r = 0, ans = 0, now = 0;
for(int i = 0; i < n; ++i){
if(s[i] == 'L'){now++, r = max(r,now);continue;}
int rb = max(r,now+1);
int rb2 = n-i-1;
if(rb-l == 1){
ans+=po(2,rb2>>1);
ans+=po(2,(rb2+1)>>1);
ans--;
ans+=M;
ans%=M;
}
else if(rb-l == 2){
if(now+2==rb)ans+=po(2,(rb2+1)>>1);
else ans+=po(2,rb2>>1);
}
now--, l = min(l,now);
}
cout << (ans+1)%M << "\n";
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 492 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 1 ms 364 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 1 ms 364 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 1 ms 364 KB Output is correct
3 Correct 1 ms 364 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 500 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 508 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 492 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 620 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 23 ms 1272 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 15 ms 1400 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 29 ms 1528 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 31 ms 2048 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 78 ms 2440 KB Output is correct
2 Correct 37 ms 2440 KB Output is correct
3 Correct 114 ms 2440 KB Output is correct