Submission #1036477

#TimeUsernameProblemLanguageResultExecution timeMemory
1036477VMaksimoski008Linear Garden (IOI08_linear_garden)C++17
0 / 100
1558 ms65536 KiB
#include <bits/stdc++.h>

#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
//#define int long long

using namespace std;

using ll = long long;
using pii = pair<int, int>;
using pll = pair<ll, ll>;

const int mod = 1e9 + 7;
const int LOG = 20;
const int maxn = 1e5 + 5;

ll n, m, ans = 0;
string s;

void f(string t) {
    if(t.size() == n) {
        for(int i=0; i<n; i++) {
            if(t[i] > s[i]) break;
            if(t[i] < s[i]) {
                ans = (ans + 1) % m;
                return ;
            }
        }
        return ;
    }

    if(t.size() < 2) {
        t += '1';
        f(t);
        t.pop_back();
        t += '0';
        f(t);
        t.pop_back();
    } else {
        if(t[t.size()-1] == t[t.size()-2]) {
            char ch;
            if(t[t.size()-1] == '1') ch = '0';
            else ch = '1';
            t += ch;
            f(t);
            t.pop_back();
        } else {
            t += '1';
            f(t);
            t.pop_back();
            t += '0';
            f(t);
            t.pop_back();
        }
    } 
}

signed main() {
    cin >> n >> m >> s;
    for(int i=0; i<n; i++) s[i] = (s[i] == 'P' ? '1' : '0');
    // cout << s << '\n';

    f("");
    cout << ans << '\n';
    return 0;
}

Compilation message (stderr)

linear_garden.cpp: In function 'void f(std::string)':
linear_garden.cpp:21:17: warning: comparison of integer expressions of different signedness: 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} and 'll' {aka 'long long int'} [-Wsign-compare]
   21 |     if(t.size() == n) {
      |        ~~~~~~~~~^~~~
#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...