Submission #1020333

#TimeUsernameProblemLanguageResultExecution timeMemory
1020333aaaaaarrozLinear Garden (IOI08_linear_garden)C++17
100 / 100
10 ms10232 KiB
    #include <bits/stdc++.h>
     
    #define ll long long
    #define F first
    #define S second
    #define all(x) x.begin(), x.end()
    #define pb push_back
    #define FIO ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0)
     
    using namespace std;
     
    typedef pair <ll, ll> pii;
     
    const int N = 1e6 + 7;
     
    int n, mod;
    string s;
    ll ps[N];
     
    int main () {
    	FIO;
    	cin >> n >> mod >> s;
    	
    	ps[n] = ps[n-1] = 1;
    	for (int i = n-2; i >= 0; i--) {
    		ps[i] = 2*ps[i+2] % mod;
    	}
    	
    	ll res = 1;
    	
    	int la = 0;
    	for (int i = 0; i < n; i++) {
    		if (i > 1 && s[i-1] == s[i-2]) la = i-1;
    		if (s[i] == 'L') continue;
    		if (la && s[la] == 'L' && s[i-1] == 'L') continue;
    		if (!i) res = (res + ps[0] + ps[1] - 1 + mod) % mod;
    		else if (s[i-1] == 'L') res = (res + ps[i+1]) % mod;
    		else {
    			if (!la) res = (res + ps[i] + ps[i+1] + mod - 1) % mod;
    			else res = (res + ps[i+1]) % mod;
    		}
    	}
    	
    	cout << res;
     
    	return 0;
    }
#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...