QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#325809#3098. Ancient Machinebachbeo2007100 ✓66ms9948kbC++2027.4kb2024-02-11 23:46:072024-02-11 23:46:08

Judging History

你现在查看的是最新测评结果

  • [2024-02-11 23:46:08]
  • 评测
  • 测评结果:100
  • 用时:66ms
  • 内存:9948kb
  • [2024-02-11 23:46:07]
  • 提交

Anna

#include "Anna.h"
#include <bits/stdc++.h>
using namespace std;
const int Block = 250;
const int Bit = 174;

constexpr int digits(int base) noexcept {
    return base <= 1 ? 0 : 1 + digits(base / 10);
}

constexpr int base = 1000'000'000;
constexpr int base_digits = digits(base);

constexpr int fft_base = 10'000;  // fft_base^2 * n / fft_base_digits <= 10^15 for double
constexpr int fft_base_digits = digits(fft_base);
using cpx = complex<double>;
const double PI = acos(-1);
vector<cpx> roots = {{0, 0}, {1, 0}};

void ensure_capacity(int min_capacity) {
    for (int len = roots.size(); len < min_capacity; len *= 2) {
        for (int i = len >> 1; i < len; i++) {
            roots.emplace_back(roots[i]);
            double angle = 2 * PI * (2 * i + 1 - len) / (len * 2);
            roots.emplace_back(cos(angle), sin(angle));
        }
    }
}

void fft(vector<cpx> &z, bool inverse) {
    int n = z.size();
    assert((n & (n - 1)) == 0);
    ensure_capacity(n);
    for (unsigned i = 1, j = 0; i < n; i++) {
        int bit = n >> 1;
        for (; j >= bit; bit >>= 1)
            j -= bit;
        j += bit;
        if (i < j)
            swap(z[i], z[j]);
    }
    for (int len = 1; len < n; len <<= 1) {
        for (int i = 0; i < n; i += len * 2) {
            for (int j = 0; j < len; j++) {
                cpx root = inverse ? conj(roots[j + len]) : roots[j + len];
                cpx u = z[i + j];
                cpx v = z[i + j + len] * root;
                z[i + j] = u + v;
                z[i + j + len] = u - v;
            }
        }
    }
    if (inverse)
        for (int i = 0; i < n; i++)
            z[i] /= n;
}

vector<int> multiply_bigint(const vector<int> &a, const vector<int> &b, int base) {
    int need = a.size() + b.size();
    int n = 1;
    while (n < need)
        n <<= 1;
    vector<cpx> p(n);
    for (size_t i = 0; i < n; i++) {
        p[i] = cpx(i < a.size() ? a[i] : 0, i < b.size() ? b[i] : 0);
    }
    fft(p, false);
    // a[w[k]] = (p[w[k]] + conj(p[w[n-k]])) / 2
    // b[w[k]] = (p[w[k]] - conj(p[w[n-k]])) / (2*i)
    vector<cpx> ab(n);
    cpx r(0, -0.25);
    for (int i = 0; i < n; i++) {
        int j = (n - i) & (n - 1);
        ab[i] = (p[i] * p[i] - conj(p[j] * p[j])) * r;
    }
    fft(ab, true);
    vector<int> result(need);
    long long carry = 0;
    for (int i = 0; i < need; i++) {
        long long d = (long long)(ab[i].real() + 0.5) + carry;
        carry = d / base;
        result[i] = d % base;
    }
    return result;
}
struct bigint {
    // value == 0 is represented by empty z
    vector<int> z;  // digits

    // sign == 1 <==> value >= 0
    // sign == -1 <==> value < 0
    int sign;

    bigint(long long v = 0) { *this = v; }

    bigint &operator=(long long v) {
        sign = v < 0 ? -1 : 1;
        v *= sign;
        z.clear();
        for (; v > 0; v = v / base)
            z.push_back((int)(v % base));
        return *this;
    }

    bigint(const string &s) { read(s); }

    bigint &operator+=(const bigint &other) {
        if (sign == other.sign) {
            for (int i = 0, carry = 0; i < other.z.size() || carry; ++i) {
                if (i == z.size())
                    z.push_back(0);
                z[i] += carry + (i < other.z.size() ? other.z[i] : 0);
                carry = z[i] >= base;
                if (carry)
                    z[i] -= base;
            }
        } else if (other != 0 /* prevent infinite loop */) {
            *this -= -other;
        }
        return *this;
    }

    friend bigint operator+(bigint a, const bigint &b) {
        a += b;
        return a;
    }

    bigint &operator-=(const bigint &other) {
        if (sign == other.sign) {
            if ((sign == 1 && *this >= other) || (sign == -1 && *this <= other)) {
                for (int i = 0, carry = 0; i < other.z.size() || carry; ++i) {
                    z[i] -= carry + (i < other.z.size() ? other.z[i] : 0);
                    carry = z[i] < 0;
                    if (carry)
                        z[i] += base;
                }
                trim();
            } else {
                *this = other - *this;
                this->sign = -this->sign;
            }
        } else {
            *this += -other;
        }
        return *this;
    }

    friend bigint operator-(bigint a, const bigint &b) {
        a -= b;
        return a;
    }

    bigint &operator*=(int v) {
        if (v < 0)
            sign = -sign, v = -v;
        for (int i = 0, carry = 0; i < z.size() || carry; ++i) {
            if (i == z.size())
                z.push_back(0);
            long long cur = (long long)z[i] * v + carry;
            carry = (int)(cur / base);
            z[i] = (int)(cur % base);
        }
        trim();
        return *this;
    }

    bigint operator*(int v) const { return bigint(*this) *= v; }

    friend pair<bigint, bigint> divmod(const bigint &a1, const bigint &b1) {
        int norm = base / (b1.z.back() + 1);
        bigint a = a1.abs() * norm;
        bigint b = b1.abs() * norm;
        bigint q, r;
        q.z.resize(a.z.size());

        for (int i = (int)a.z.size() - 1; i >= 0; i--) {
            r *= base;
            r += a.z[i];
            int s1 = b.z.size() < r.z.size() ? r.z[b.z.size()] : 0;
            int s2 = b.z.size() - 1 < r.z.size() ? r.z[b.z.size() - 1] : 0;
            int d = (int)(((long long)s1 * base + s2) / b.z.back());
            r -= b * d;
            while (r < 0)
                r += b, --d;
            q.z[i] = d;
        }

        q.sign = a1.sign * b1.sign;
        r.sign = a1.sign;
        q.trim();
        r.trim();
        return {q, r / norm};
    }

    friend bigint sqrt(const bigint &a1) {
        bigint a = a1;
        while (a.z.empty() || a.z.size() % 2 == 1)
            a.z.push_back(0);

        int n = a.z.size();

        int firstDigit = (int)::sqrt((double)a.z[n - 1] * base + a.z[n - 2]);
        int norm = base / (firstDigit + 1);
        a *= norm;
        a *= norm;
        while (a.z.empty() || a.z.size() % 2 == 1)
            a.z.push_back(0);

        bigint r = (long long)a.z[n - 1] * base + a.z[n - 2];
        firstDigit = (int)::sqrt((double)a.z[n - 1] * base + a.z[n - 2]);
        int q = firstDigit;
        bigint res;

        for (int j = n / 2 - 1; j >= 0; j--) {
            for (;; --q) {
                bigint r1 = (r - (res * 2 * base + q) * q) * base * base +
                            (j > 0 ? (long long)a.z[2 * j - 1] * base + a.z[2 * j - 2] : 0);
                if (r1 >= 0) {
                    r = r1;
                    break;
                }
            }
            res *= base;
            res += q;

            if (j > 0) {
                int d1 = res.z.size() + 2 < r.z.size() ? r.z[res.z.size() + 2] : 0;
                int d2 = res.z.size() + 1 < r.z.size() ? r.z[res.z.size() + 1] : 0;
                int d3 = res.z.size() < r.z.size() ? r.z[res.z.size()] : 0;
                q = (int)(((long long)d1 * base * base + (long long)d2 * base + d3) / (firstDigit * 2));
            }
        }

        res.trim();
        return res / norm;
    }

    bigint operator/(const bigint &v) const { return divmod(*this, v).first; }

    bigint operator%(const bigint &v) const { return divmod(*this, v).second; }

    bigint &operator/=(int v) {
        if (v < 0)
            sign = -sign, v = -v;
        for (int i = (int)z.size() - 1, rem = 0; i >= 0; --i) {
            long long cur = z[i] + rem * (long long)base;
            z[i] = (int)(cur / v);
            rem = (int)(cur % v);
        }
        trim();
        return *this;
    }

    bigint operator/(int v) const { return bigint(*this) /= v; }

    int operator%(int v) const {
        if (v < 0)
            v = -v;
        int m = 0;
        for (int i = (int)z.size() - 1; i >= 0; --i)
            m = (int)((z[i] + m * (long long)base) % v);
        return m * sign;
    }

    bigint &operator*=(const bigint &v) {
        *this = *this * v;
        return *this;
    }

    bigint &operator/=(const bigint &v) {
        *this = *this / v;
        return *this;
    }

    bigint &operator%=(const bigint &v) {
        *this = *this % v;
        return *this;
    }

    bool operator<(const bigint &v) const {
        if (sign != v.sign)
            return sign < v.sign;
        if (z.size() != v.z.size())
            return z.size() * sign < v.z.size() * v.sign;
        for (int i = (int)z.size() - 1; i >= 0; i--)
            if (z[i] != v.z[i])
                return z[i] * sign < v.z[i] * sign;
        return false;
    }

    bool operator>(const bigint &v) const { return v < *this; }

    bool operator<=(const bigint &v) const { return !(v < *this); }

    bool operator>=(const bigint &v) const { return !(*this < v); }

    bool operator==(const bigint &v) const { return sign == v.sign && z == v.z; }

    bool operator!=(const bigint &v) const { return !(*this == v); }

    void trim() {
        while (!z.empty() && z.back() == 0)
            z.pop_back();
        if (z.empty())
            sign = 1;
    }

    bool isZero() const { return z.empty(); }

    friend bigint operator-(bigint v) {
        if (!v.z.empty())
            v.sign = -v.sign;
        return v;
    }

    bigint abs() const { return sign == 1 ? *this : -*this; }

    long long longValue() const {
        long long res = 0;
        for (int i = (int)z.size() - 1; i >= 0; i--)
            res = res * base + z[i];
        return res * sign;
    }

    friend bigint gcd(const bigint &a, const bigint &b) { return b.isZero() ? a : gcd(b, a % b); }

    friend bigint lcm(const bigint &a, const bigint &b) { return a / gcd(a, b) * b; }

    void read(const string &s) {
        sign = 1;
        z.clear();
        int pos = 0;
        while (pos < s.size() && (s[pos] == '-' || s[pos] == '+')) {
            if (s[pos] == '-')
                sign = -sign;
            ++pos;
        }
        for (int i = (int)s.size() - 1; i >= pos; i -= base_digits) {
            int x = 0;
            for (int j = max(pos, i - base_digits + 1); j <= i; j++)
                x = x * 10 + s[j] - '0';
            z.push_back(x);
        }
        trim();
    }

    friend istream &operator>>(istream &stream, bigint &v) {
        string s;
        stream >> s;
        v.read(s);
        return stream;
    }

    friend ostream &operator<<(ostream &stream, const bigint &v) {
        if (v.sign == -1)
            stream << '-';
        stream << (v.z.empty() ? 0 : v.z.back());
        for (int i = (int)v.z.size() - 2; i >= 0; --i)
            stream << setw(base_digits) << setfill('0') << v.z[i];
        return stream;
    }

    static vector<int> convert_base(const vector<int> &a, int old_digits, int new_digits) {
        vector<long long> p(max(old_digits, new_digits) + 1);
        p[0] = 1;
        for (int i = 1; i < p.size(); i++)
            p[i] = p[i - 1] * 10;
        vector<int> res;
        long long cur = 0;
        int cur_digits = 0;
        for (int v : a) {
            cur += v * p[cur_digits];
            cur_digits += old_digits;
            while (cur_digits >= new_digits) {
                res.push_back(int(cur % p[new_digits]));
                cur /= p[new_digits];
                cur_digits -= new_digits;
            }
        }
        res.push_back((int)cur);
        while (!res.empty() && res.back() == 0)
            res.pop_back();
        return res;
    }

    bigint operator*(const bigint &v) const {
        if (min(z.size(), v.z.size()) < 150)
            return mul_simple(v);
        bigint res;
        res.sign = sign * v.sign;
        res.z = multiply_bigint(convert_base(z, base_digits, fft_base_digits),
                                convert_base(v.z, base_digits, fft_base_digits), fft_base);
        res.z = convert_base(res.z, fft_base_digits, base_digits);
        res.trim();
        return res;
    }

    bigint mul_simple(const bigint &v) const {
        bigint res;
        res.sign = sign * v.sign;
        res.z.resize(z.size() + v.z.size());
        for (int i = 0; i < z.size(); ++i)
            if (z[i])
                for (int j = 0, carry = 0; j < v.z.size() || carry; ++j) {
                    long long cur = res.z[i + j] + (long long)z[i] * (j < v.z.size() ? v.z[j] : 0) + carry;
                    carry = (int)(cur / base);
                    res.z[i + j] = (int)(cur % base);
                }
        res.trim();
        return res;
    }
};

namespace{
    bigint F[Block+5];
}

bigint bit_to_fib(string s){
    bigint total=0;
    int pos=Block-1;
    while(pos>=0){
        if(s[pos]=='1') total+=F[pos],pos-=2;
        else pos--;
    }
    return total;
}

void Anna(int N, std::vector<char> S) {
    F[0]=1;F[1]=2;
    for(int i=2;i<=Block;i++) F[i]=(F[i-1]+F[i-2]);

    int f=-1,lst=-1;
    string res;
    for(int i=0;i<N;i++){
        if(f==-1){
            if(S[i]=='X') f=i;
            res+='0';
        }
        else if(S[i]=='Z'){
            if(S[i-1]=='Z') res.back()='0';
            res+='1';
        }
        else res+='0';
    }

    bool check=true;
    if(f!=-1 && (f+1==N || res[f+1]=='0')) res[f]='1';
    else check=false;

    while(N%Block!=0) res+='0',N++;
    for(int i=0;i<N;i+=Block){
        string cur;
        for(int j=0;j<Block;j++) cur+=res[i+j];
        bigint total=bit_to_fib(cur);
        for(int j=0;j<Bit;j++) Send(total%2),total/=2;
    }
    if(!check){
        if(f==-1) Send(0);
        else Send(1);
    }
}

Bruno

#include "Bruno.h"
#include<bits/stdc++.h>
using namespace std;
const int Block = 250;
const int Bit = 174;

constexpr int digits(int base) noexcept {
    return base <= 1 ? 0 : 1 + digits(base / 10);
}

constexpr int base = 1000'000'000;
constexpr int base_digits = digits(base);

constexpr int fft_base = 10'000;  // fft_base^2 * n / fft_base_digits <= 10^15 for double
constexpr int fft_base_digits = digits(fft_base);
using cpx = complex<double>;
const double PI = acos(-1);
vector<cpx> roots = {{0, 0}, {1, 0}};

void ensure_capacity(int min_capacity) {
    for (int len = roots.size(); len < min_capacity; len *= 2) {
        for (int i = len >> 1; i < len; i++) {
            roots.emplace_back(roots[i]);
            double angle = 2 * PI * (2 * i + 1 - len) / (len * 2);
            roots.emplace_back(cos(angle), sin(angle));
        }
    }
}

void fft(vector<cpx> &z, bool inverse) {
    int n = z.size();
    assert((n & (n - 1)) == 0);
    ensure_capacity(n);
    for (unsigned i = 1, j = 0; i < n; i++) {
        int bit = n >> 1;
        for (; j >= bit; bit >>= 1)
            j -= bit;
        j += bit;
        if (i < j)
            swap(z[i], z[j]);
    }
    for (int len = 1; len < n; len <<= 1) {
        for (int i = 0; i < n; i += len * 2) {
            for (int j = 0; j < len; j++) {
                cpx root = inverse ? conj(roots[j + len]) : roots[j + len];
                cpx u = z[i + j];
                cpx v = z[i + j + len] * root;
                z[i + j] = u + v;
                z[i + j + len] = u - v;
            }
        }
    }
    if (inverse)
        for (int i = 0; i < n; i++)
            z[i] /= n;
}

vector<int> multiply_bigint(const vector<int> &a, const vector<int> &b, int base) {
    int need = a.size() + b.size();
    int n = 1;
    while (n < need)
        n <<= 1;
    vector<cpx> p(n);
    for (size_t i = 0; i < n; i++) {
        p[i] = cpx(i < a.size() ? a[i] : 0, i < b.size() ? b[i] : 0);
    }
    fft(p, false);
    // a[w[k]] = (p[w[k]] + conj(p[w[n-k]])) / 2
    // b[w[k]] = (p[w[k]] - conj(p[w[n-k]])) / (2*i)
    vector<cpx> ab(n);
    cpx r(0, -0.25);
    for (int i = 0; i < n; i++) {
        int j = (n - i) & (n - 1);
        ab[i] = (p[i] * p[i] - conj(p[j] * p[j])) * r;
    }
    fft(ab, true);
    vector<int> result(need);
    long long carry = 0;
    for (int i = 0; i < need; i++) {
        long long d = (long long)(ab[i].real() + 0.5) + carry;
        carry = d / base;
        result[i] = d % base;
    }
    return result;
}
struct bigint {
    // value == 0 is represented by empty z
    vector<int> z;  // digits

    // sign == 1 <==> value >= 0
    // sign == -1 <==> value < 0
    int sign;

    bigint(long long v = 0) { *this = v; }

    bigint &operator=(long long v) {
        sign = v < 0 ? -1 : 1;
        v *= sign;
        z.clear();
        for (; v > 0; v = v / base)
            z.push_back((int)(v % base));
        return *this;
    }

    bigint(const string &s) { read(s); }

    bigint &operator+=(const bigint &other) {
        if (sign == other.sign) {
            for (int i = 0, carry = 0; i < other.z.size() || carry; ++i) {
                if (i == z.size())
                    z.push_back(0);
                z[i] += carry + (i < other.z.size() ? other.z[i] : 0);
                carry = z[i] >= base;
                if (carry)
                    z[i] -= base;
            }
        } else if (other != 0 /* prevent infinite loop */) {
            *this -= -other;
        }
        return *this;
    }

    friend bigint operator+(bigint a, const bigint &b) {
        a += b;
        return a;
    }

    bigint &operator-=(const bigint &other) {
        if (sign == other.sign) {
            if ((sign == 1 && *this >= other) || (sign == -1 && *this <= other)) {
                for (int i = 0, carry = 0; i < other.z.size() || carry; ++i) {
                    z[i] -= carry + (i < other.z.size() ? other.z[i] : 0);
                    carry = z[i] < 0;
                    if (carry)
                        z[i] += base;
                }
                trim();
            } else {
                *this = other - *this;
                this->sign = -this->sign;
            }
        } else {
            *this += -other;
        }
        return *this;
    }

    friend bigint operator-(bigint a, const bigint &b) {
        a -= b;
        return a;
    }

    bigint &operator*=(int v) {
        if (v < 0)
            sign = -sign, v = -v;
        for (int i = 0, carry = 0; i < z.size() || carry; ++i) {
            if (i == z.size())
                z.push_back(0);
            long long cur = (long long)z[i] * v + carry;
            carry = (int)(cur / base);
            z[i] = (int)(cur % base);
        }
        trim();
        return *this;
    }

    bigint operator*(int v) const { return bigint(*this) *= v; }

    friend pair<bigint, bigint> divmod(const bigint &a1, const bigint &b1) {
        int norm = base / (b1.z.back() + 1);
        bigint a = a1.abs() * norm;
        bigint b = b1.abs() * norm;
        bigint q, r;
        q.z.resize(a.z.size());

        for (int i = (int)a.z.size() - 1; i >= 0; i--) {
            r *= base;
            r += a.z[i];
            int s1 = b.z.size() < r.z.size() ? r.z[b.z.size()] : 0;
            int s2 = b.z.size() - 1 < r.z.size() ? r.z[b.z.size() - 1] : 0;
            int d = (int)(((long long)s1 * base + s2) / b.z.back());
            r -= b * d;
            while (r < 0)
                r += b, --d;
            q.z[i] = d;
        }

        q.sign = a1.sign * b1.sign;
        r.sign = a1.sign;
        q.trim();
        r.trim();
        return {q, r / norm};
    }

    friend bigint sqrt(const bigint &a1) {
        bigint a = a1;
        while (a.z.empty() || a.z.size() % 2 == 1)
            a.z.push_back(0);

        int n = a.z.size();

        int firstDigit = (int)::sqrt((double)a.z[n - 1] * base + a.z[n - 2]);
        int norm = base / (firstDigit + 1);
        a *= norm;
        a *= norm;
        while (a.z.empty() || a.z.size() % 2 == 1)
            a.z.push_back(0);

        bigint r = (long long)a.z[n - 1] * base + a.z[n - 2];
        firstDigit = (int)::sqrt((double)a.z[n - 1] * base + a.z[n - 2]);
        int q = firstDigit;
        bigint res;

        for (int j = n / 2 - 1; j >= 0; j--) {
            for (;; --q) {
                bigint r1 = (r - (res * 2 * base + q) * q) * base * base +
                            (j > 0 ? (long long)a.z[2 * j - 1] * base + a.z[2 * j - 2] : 0);
                if (r1 >= 0) {
                    r = r1;
                    break;
                }
            }
            res *= base;
            res += q;

            if (j > 0) {
                int d1 = res.z.size() + 2 < r.z.size() ? r.z[res.z.size() + 2] : 0;
                int d2 = res.z.size() + 1 < r.z.size() ? r.z[res.z.size() + 1] : 0;
                int d3 = res.z.size() < r.z.size() ? r.z[res.z.size()] : 0;
                q = (int)(((long long)d1 * base * base + (long long)d2 * base + d3) / (firstDigit * 2));
            }
        }

        res.trim();
        return res / norm;
    }

    bigint operator/(const bigint &v) const { return divmod(*this, v).first; }

    bigint operator%(const bigint &v) const { return divmod(*this, v).second; }

    bigint &operator/=(int v) {
        if (v < 0)
            sign = -sign, v = -v;
        for (int i = (int)z.size() - 1, rem = 0; i >= 0; --i) {
            long long cur = z[i] + rem * (long long)base;
            z[i] = (int)(cur / v);
            rem = (int)(cur % v);
        }
        trim();
        return *this;
    }

    bigint operator/(int v) const { return bigint(*this) /= v; }

    int operator%(int v) const {
        if (v < 0)
            v = -v;
        int m = 0;
        for (int i = (int)z.size() - 1; i >= 0; --i)
            m = (int)((z[i] + m * (long long)base) % v);
        return m * sign;
    }

    bigint &operator*=(const bigint &v) {
        *this = *this * v;
        return *this;
    }

    bigint &operator/=(const bigint &v) {
        *this = *this / v;
        return *this;
    }

    bigint &operator%=(const bigint &v) {
        *this = *this % v;
        return *this;
    }

    bool operator<(const bigint &v) const {
        if (sign != v.sign)
            return sign < v.sign;
        if (z.size() != v.z.size())
            return z.size() * sign < v.z.size() * v.sign;
        for (int i = (int)z.size() - 1; i >= 0; i--)
            if (z[i] != v.z[i])
                return z[i] * sign < v.z[i] * sign;
        return false;
    }

    bool operator>(const bigint &v) const { return v < *this; }

    bool operator<=(const bigint &v) const { return !(v < *this); }

    bool operator>=(const bigint &v) const { return !(*this < v); }

    bool operator==(const bigint &v) const { return sign == v.sign && z == v.z; }

    bool operator!=(const bigint &v) const { return !(*this == v); }

    void trim() {
        while (!z.empty() && z.back() == 0)
            z.pop_back();
        if (z.empty())
            sign = 1;
    }

    bool isZero() const { return z.empty(); }

    friend bigint operator-(bigint v) {
        if (!v.z.empty())
            v.sign = -v.sign;
        return v;
    }

    bigint abs() const { return sign == 1 ? *this : -*this; }

    long long longValue() const {
        long long res = 0;
        for (int i = (int)z.size() - 1; i >= 0; i--)
            res = res * base + z[i];
        return res * sign;
    }

    friend bigint gcd(const bigint &a, const bigint &b) { return b.isZero() ? a : gcd(b, a % b); }

    friend bigint lcm(const bigint &a, const bigint &b) { return a / gcd(a, b) * b; }

    void read(const string &s) {
        sign = 1;
        z.clear();
        int pos = 0;
        while (pos < s.size() && (s[pos] == '-' || s[pos] == '+')) {
            if (s[pos] == '-')
                sign = -sign;
            ++pos;
        }
        for (int i = (int)s.size() - 1; i >= pos; i -= base_digits) {
            int x = 0;
            for (int j = max(pos, i - base_digits + 1); j <= i; j++)
                x = x * 10 + s[j] - '0';
            z.push_back(x);
        }
        trim();
    }

    friend istream &operator>>(istream &stream, bigint &v) {
        string s;
        stream >> s;
        v.read(s);
        return stream;
    }

    friend ostream &operator<<(ostream &stream, const bigint &v) {
        if (v.sign == -1)
            stream << '-';
        stream << (v.z.empty() ? 0 : v.z.back());
        for (int i = (int)v.z.size() - 2; i >= 0; --i)
            stream << setw(base_digits) << setfill('0') << v.z[i];
        return stream;
    }

    static vector<int> convert_base(const vector<int> &a, int old_digits, int new_digits) {
        vector<long long> p(max(old_digits, new_digits) + 1);
        p[0] = 1;
        for (int i = 1; i < p.size(); i++)
            p[i] = p[i - 1] * 10;
        vector<int> res;
        long long cur = 0;
        int cur_digits = 0;
        for (int v : a) {
            cur += v * p[cur_digits];
            cur_digits += old_digits;
            while (cur_digits >= new_digits) {
                res.push_back(int(cur % p[new_digits]));
                cur /= p[new_digits];
                cur_digits -= new_digits;
            }
        }
        res.push_back((int)cur);
        while (!res.empty() && res.back() == 0)
            res.pop_back();
        return res;
    }

    bigint operator*(const bigint &v) const {
        if (min(z.size(), v.z.size()) < 150)
            return mul_simple(v);
        bigint res;
        res.sign = sign * v.sign;
        res.z = multiply_bigint(convert_base(z, base_digits, fft_base_digits),
                                convert_base(v.z, base_digits, fft_base_digits), fft_base);
        res.z = convert_base(res.z, fft_base_digits, base_digits);
        res.trim();
        return res;
    }

    bigint mul_simple(const bigint &v) const {
        bigint res;
        res.sign = sign * v.sign;
        res.z.resize(z.size() + v.z.size());
        for (int i = 0; i < z.size(); ++i)
            if (z[i])
                for (int j = 0, carry = 0; j < v.z.size() || carry; ++j) {
                    long long cur = res.z[i + j] + (long long)z[i] * (j < v.z.size() ? v.z[j] : 0) + carry;
                    carry = (int)(cur / base);
                    res.z[i + j] = (int)(cur % base);
                }
        res.trim();
        return res;
    }
};

namespace{
    bigint F[Block+5];
}

string fib_to_bit(bigint total){
    string res;
    int pos=Block-1;
    while(pos>=0){
        if(total>=F[pos]) res+="10",total-=F[pos],pos-=2;
        else res+='0',pos--;
    }
    if((int)res.length()>Block) res.pop_back();
    reverse(res.begin(),res.end());
    return res;
}

void Bruno(int N, int L,vector<int> A) {

    F[0]=1;F[1]=2;
    for(int i=2;i<=Block;i++) F[i]=F[i-1]+F[i-2];

    int f=0;
    if(L%Bit!=0){
        if(A.back()!=0) f=1;
        else f=-1;
        A.pop_back();L--;
    }
    if(f==-1){
        for(int i=0;i<N;i++) Remove(i);
        return;
    }
    string s;
    for(int i=0;i<L;i+=Bit){
        bigint total=0;
        for(int j=Bit-1;j>=0;j--) total=total*2+A[i+j];
        s+=fib_to_bit(total);
    }
    while((int)s.length()>N) s.pop_back();
    for(int i=0;i<N;i++) if(s[i]=='1'){
        f=i-f;break;
    }

    for(int i=0;i<f;i++) Remove(i);

    int lst=f;
    for(int i=f+1;i<N;i++){
        if(s[i]=='1'){
            for(int j=i-1;j>lst;j--) Remove(j);
            Remove(i);lst=i;
        }
    }
    for(int i=lst+1;i<N;i++) Remove(i);
    Remove(f);
}

詳細信息

Subtask #1:

score: 5
Accepted

Test #1:

score: 100
Accepted
time: 2ms
memory: 3936kb

input:

18
Y X Y Z X Z X X Z Z Y Y Z Y Y Z X X

output:

174
110001000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

input:

174
110001000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

output:

0 174 3

result:

ok n = 18, D = 174, L = 3

Test #2:

score: 100
Accepted
time: 2ms
memory: 4024kb

input:

18
X Z X Y Y Y X Z X Y Z Z Z Z Y Z Z Y

output:

175
0111100100110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

input:

175
0111100100110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

output:

0 175 3

result:

ok n = 18, D = 175, L = 3

Test #3:

score: 100
Accepted
time: 2ms
memory: 3768kb

input:

18
Y Z Z Y Z X X Z Y Y Z Z Z Y X X Z Y

output:

174
000000111101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

input:

174
000000111101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

output:

0 174 2

result:

ok n = 18, D = 174, L = 2

Test #4:

score: 100
Accepted
time: 2ms
memory: 3740kb

input:

18
X Z Z X Z X X Z X Y Y X X Z X Y Z X

output:

174
000101010011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

input:

174
000101010011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

output:

0 174 2

result:

ok n = 18, D = 174, L = 2

Test #5:

score: 100
Accepted
time: 2ms
memory: 3828kb

input:

18
X Y X Y Y X X Z Y Z Y X Z Y Y X X Z

output:

174
010100100100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

input:

174
010100100100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

output:

0 174 5

result:

ok n = 18, D = 174, L = 5

Test #6:

score: 100
Accepted
time: 0ms
memory: 3720kb

input:

18
X X Y Z X Y Y Y X X Z X X X Z X Z Z

output:

174
011000110010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

input:

174
011000110010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

output:

0 174 2

result:

ok n = 18, D = 174, L = 2

Test #7:

score: 100
Accepted
time: 2ms
memory: 4064kb

input:

3
X Y Z

output:

174
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

input:

174
001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

output:

0 174 1

result:

ok n = 3, D = 174, L = 1

Test #8:

score: 100
Accepted
time: 2ms
memory: 4008kb

input:

3
Z Y X

output:

174
110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

input:

174
110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

output:

0 174 0

result:

ok n = 3, D = 174, L = 0

Test #9:

score: 100
Accepted
time: 2ms
memory: 3888kb

input:

18
X X X X X X X X X X X X X X X X X X

output:

174
100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

input:

174
100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

output:

0 174 0

result:

ok n = 18, D = 174, L = 0

Test #10:

score: 100
Accepted
time: 2ms
memory: 3892kb

input:

18
Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y

output:

175
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

input:

175
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

output:

0 175 0

result:

ok n = 18, D = 175, L = 0

Test #11:

score: 100
Accepted
time: 2ms
memory: 4004kb

input:

18
Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z

output:

175
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

input:

175
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

output:

0 175 0

result:

ok n = 18, D = 175, L = 0

Subtask #2:

score: 95
Accepted

Test #12:

score: 100
Accepted
time: 50ms
memory: 9664kb

input:

100000
X Z X Z Z X Y Z Y X Y X Z Z Z Y X Z Y X Y Y X Y Y Y Z Y Z Z Y X X Y X X Y Y X X X Z Y Y Y Z Z Z Z Y X Y Y Z Z Z X Y Z X X X X Y X Y X X Z X Z Z Z X Y X X X Z X Z X X X Y Y Y Y Z X X Y Z Y Y X Z X Z Z Z Z Z Y Z Y X Y Y Y Y X Z Z Y Z Z Y Z Z Z X Z Z X X Z Z Z Z X X Z Y Y Z Y Y Z Z Y Y Z Y Z Y Z...

output:

69601
111111101000110101101001011001100001101111111111111111111011111101110000001001011001011100001001101001010010001100011111011000101111111101010000000011011111110101011010000110111100011101111011101101010100101100000011111111010111111111111001101010100001010110000010000010100001001010101110010011...

input:

69601
111111101000110101101001011001100001101111111111111111111011111101110000001001011001011100001001101001010010001100011111011000101111111101010000000011011111110101011010000110111100011101111011101101010100101100000011111111010111111111111001101010100001010110000010000010100001001010101110010011...

output:

0 69601 22133

result:

points 1.0 n = 100000, D = 69601, L = 22133

Test #13:

score: 100
Accepted
time: 50ms
memory: 9600kb

input:

100000
Z X X Y Z Z Z Y Z X Y Y Z X X Z Z Z Y Z X Y X Y X Z Y X Z X Y X Y Y Z X X Z X Z Y Z Y Z Z Z Y X Z X Z Y Y Y Z Y Z Y Z X Y X Z Z X Y X Y Z X Y Z Y X Y X X Z Z X Z X X Z X X X X Y X X Z Z X Y Y Y Y X Y X X Z Y Z Y Y Z X X Z Z Y Y X Z Y Y X Y Z Y Z Y Y Z Z X Z Y Z Z Z X Y Z Z X X X X Z Y X Y Y Z...

output:

69600
010010000100100000111010111011111001011111000011110011110010100100110010111001100101101101111010001100110001111000010110010011001100011101010100110110000010000101110110110101000010111111111010101000110100101100110110011110011100010111110001011111000110011001111101011000001011011010010101100110...

input:

69600
010010000100100000111010111011111001011111000011110011110010100100110010111001100101101101111010001100110001111000010110010011001100011101010100110110000010000101110110110101000010111111111010101000110100101100110110011110011100010111110001011111000110011001111101011000001011011010010101100110...

output:

0 69600 22275

result:

points 1.0 n = 100000, D = 69600, L = 22275

Test #14:

score: 100
Accepted
time: 16ms
memory: 9560kb

input:

100000
X Z Y X Z X X Z Y Z Y Y Y Z Y Z X X Z X X Y Z X X Z Y X Y Y Z X Z Y Z X X X X Z X Y X Z X Z X X X Y X Y Z Z Z Z Z Z Z Z Y X Y Z X Z Y Z Y X Y Z Y Z Y X Y Z X Z Z Z Y X Y Y X X X X Y X X Y Z Z X Z Y Z Z Y X Y X Z Z Z X X Z X Z Z Z Z Y X Z Z X X Z Z Y X X Y Y Y X Y Y Y X X Y Y Z X Z Y Y X X Y Z...

output:

69601
111111011010010000000010011011110010110101111110000011000000000110001100010110001010101110110110001111001000101111110110001000100010110101111000100101010010110000100110011100100001000100110011111110111000101101100001000000100101010011010110110001010110010001110101101100010011000001001001001110...

input:

69601
111111011010010000000010011011110010110101111110000011000000000110001100010110001010101110110110001111001000101111110110001000100010110101111000100101010010110000100110011100100001000100110011111110111000101101100001000000100101010011010110110001010110010001110101101100010011000001001001001110...

output:

0 69601 22177

result:

points 1.0 n = 100000, D = 69601, L = 22177

Test #15:

score: 100
Accepted
time: 42ms
memory: 9516kb

input:

100000
Y Z X X X Y Y Y Z Y Z X Z X X Z X X Z X X Z Z X Z Z Z Z X X X Z X Y X X Y X Y X Z Y X Z Y Z Y Y Y Y Z Y Z X X X X Y Y Z Y X Y X Y Y Z X Z Z Y Z Z Y X X Z Y Y Y Z Y X Y Y Y Y Z Z Y Z X X Y X Z Z Y X Y Y X Z Y X Y Y Y Z Y X X Y X Z X Y X X X Y Y Y Y Y X Z Z Y Z X Y Y X X X X Z Z X X X Y Z X Z X...

output:

69600
011010011011111011000000011100000111111001100101001101100000111000000111111110010110110110011110111110101100011000110100111101100011000100110110110101110111010111111100100110100000010111101010011011010110011010101101101011100100010100101010110100101111111111010011001100110100011010001101111010...

input:

69600
011010011011111011000000011100000111111001100101001101100000111000000111111110010110110110011110111110101100011000110100111101100011000100110110110101110111010111111100100110100000010111101010011011010110011010101101101011100100010100101010110100101111111111010011001100110100011010001101111010...

output:

0 69600 22192

result:

points 1.0 n = 100000, D = 69600, L = 22192

Test #16:

score: 100
Accepted
time: 50ms
memory: 9696kb

input:

100000
Z Z X Y Z Z Z Z Y X Y Y Z X Y Y Y Z X X Z X X X Z Y X X Z Y X X Y Y Z Y Y Z Z Y Z Z Y Y X X Z X Y Y Z Z Y Z X X Y X Z X X Y Z Z Y X X Z Z Z Y Z Z X X Z X Z Z Z Y X X Z Z X X X Z X X Z Y X X Y X Y Z X Y Z Z X X X Y Y Z Z Z Z X X X X Y X Z X Z X X Z X Y X Z Z X Y X X Z Z X X Y X Z Z Z Z X Y Y Y...

output:

69600
111000010110001100110011000101001001000110011000010001101011011000101001001000000101101000011011101000001000010010110010110000100111010101100111101101110100111110001000011100101110010110101100100001001010110110101000110110001001111010000010010001101011110000111010001101000100100110010100101011...

input:

69600
111000010110001100110011000101001001000110011000010001101011011000101001001000000101101000011011101000001000010010110010110000100111010101100111101101110100111110001000011100101110010110101100100001001010110110101000110110001001111010000010010001101011110000111010001101000100100110010100101011...

output:

0 69600 22119

result:

points 1.0 n = 100000, D = 69600, L = 22119

Test #17:

score: 100
Accepted
time: 42ms
memory: 9520kb

input:

100000
X X Y Y Y Y X Z Z X Y Y X Y X Z Y Y Y Y X X Y X X Y Y X Z X Z Z Z Y Z Y Y Y X Y Y Z Y Z X Z Y Z Z X Z Z X Z Y Z Z Z Y Z X Y Y Y X Y Y Y X X X X X Z X Y X Z Y Y Z X Z Z X Y X X X Z Z Z X X X X Z Y X X Y Z X Z Z X X Y X Z Z Y X X X Y X X X X Z Y Z X X X Z X Z Z Y Y Y Z Y Y X Z Y Y X Y Y X Y X X...

output:

69600
001101111001101111000001001000110000011001010100101011101100100001101000010010110000011110000001111011100010011100010011101110001011111001101010111101100111100101101110100000000010111100010100000100110111011111111000101101011111011101111110111100110100110001010111101100100101111101000100010100...

input:

69600
001101111001101111000001001000110000011001010100101011101100100001101000010010110000011110000001111011100010011100010011101110001011111001101010111101100111100101101110100000000010111100010100000100110111011111111000101101011111011101111110111100110100110001010111101100100101111101000100010100...

output:

0 69600 22256

result:

points 1.0 n = 100000, D = 69600, L = 22256

Test #18:

score: 100
Accepted
time: 44ms
memory: 9780kb

input:

100000
X Z Z X Z X Z Z X X X Z Z Y Y Z Y Y Z Z Y X X Y Y Z Y Y Y Y Y Z X Y X Y X Z Z X Y X Z Z Y Z Y Z X Z Y Y Y Y Z X X Y X X X X Y Y Z Z X Y X Y Z Y Y Y Z X Y Y X Z Y Y Z Z X Y Y Y Y Y Y X Z Y X Z X Y Y Z Z X Z Z X Z Z Z X X Y X Y Z Z X X Y X Z Z Z X X Y Z X Z Y Z Z X X X X X Z Y X Y Z X Z X Z Z X...

output:

69600
110010000010011110100000101100101011101011101000010000101000010000100100001011101010110111001000000100000101101111100000010010110001100101011000101011110011111101000010010110110111001111011100111001001000000010010001101011111110111110001001111010010100000110111001010111101100101101011000000100...

input:

69600
110010000010011110100000101100101011101011101000010000101000010000100100001011101010110111001000000100000101101111100000010010110001100101011000101011110011111101000010010110110111001111011100111001001000000010010001101011111110111110001001111010010100000110111001010111101100101101011000000100...

output:

0 69600 22071

result:

points 1.0 n = 100000, D = 69600, L = 22071

Test #19:

score: 100
Accepted
time: 50ms
memory: 9688kb

input:

100000
X Z X Y Z Z X Y X X Y Y X Z Z X Z X X X Z Y Z X X X X Y Z Y Y X X Y Y Z Y Y Z X X X Y Z Y Z Z Y Z Y X Z Z Y X X Y Y Z Y X Z X X Y Z Y Z Z Z Z Z X Y Y X Y Y X Y Y Y Y X X Y Y X Y Z Y Y Y Y X X X X X X X Y X Y X Z Y Y Y X Z X Y X Y Z X Y Z Y X Y Y X X Y X X Z Y X X X Y Y Z Y Z X Y X Y Y Y X Z Z...

output:

69601
000010101010111100010101110100010111101111111000110100101110011101010001001000111110000100000100010111101001111000011001101010010110001101100101101000101001001000110100111000000001101110010111011100010010001111111101100001101110111011001011100010100110101101001110110100001010000110100100011100...

input:

69601
000010101010111100010101110100010111101111111000110100101110011101010001001000111110000100000100010111101001111000011001101010010110001101100101101000101001001000110100111000000001101110010111011100010010001111111101100001101110111011001011100010100110101101001110110100001010000110100100011100...

output:

0 69601 22257

result:

points 1.0 n = 100000, D = 69601, L = 22257

Test #20:

score: 100
Accepted
time: 50ms
memory: 9568kb

input:

99997
X X Z X Z X Y Z Y X Y Z X X Y Y Z X Y Y X Z Z Y Y X X Z Y Z Y X Y X Y Y Y Y Z Z X Z X Z Z Z X X Y Z Z X X Y X X Y Z Y Z Z Z Z Y X Y Z Z X X X Z Z Z Y Z Z Y Y Y X Z Y X X Z Z Y Z Y Y Z Z Z X Z X X X Z Y Z X Z Y Y X X Z Y Y Z X Z Z X Z Z Z Z X X Z Y Z Y Y X Y Y Y Z X Y Y Y Y Z Y X Y X Y Z X X X ...

output:

69600
111110110111110101111111101011001010001110010110010100111100011100101000100010100111000110000101111000111110101100001010110001110000011011110010010011111100001100111101000000111010100110100001011100010001010101010110101110100101101011011011111111001100111101100000011010010111111011110101010010...

input:

69600
111110110111110101111111101011001010001110010110010100111100011100101000100010100111000110000101111000111110101100001010110001110000011011110010010011111100001100111101000000111010100110100001011100010001010101010110101110100101101011011011111111001100111101100000011010010111111011110101010010...

output:

0 69600 22040

result:

points 1.0 n = 99997, D = 69600, L = 22040

Test #21:

score: 100
Accepted
time: 50ms
memory: 9572kb

input:

99996
X X Z Y X X Y Y X Y Z X X Y Z Z Z X Z Y Z Y Y Y Z Z Z X Z Z X Y X X X Z Y Y X X Y Y Z X Z Y X X X Y X X Z Z X Z Z Y Z X Z X Z Y Z Z X Y Z Z X Y X X Z Z X X Y Z Z X X X Z X Z X Z Y X X X X Z X Z Z Z X Z X Z Y X X Y Z Y Z Z X Y Y X X X X X Y Z Z Z Z Y Z Z Z Z Z Z Y X Y Y X Y X X X X Y Y Y Y X Z ...

output:

69600
111100000011101100010100110010111001111100001010011111000011011100111011110001000011010010111010101001110101101001000111110010010111001010111111000101000010001101100110101001101101111011011110100001011011100101101011110011100100010110111010111010000110110011100111011110100110111011111000100110...

input:

69600
111100000011101100010100110010111001111100001010011111000011011100111011110001000011010010111010101001110101101001000111110010010111001010111111000101000010001101100110101001101101111011011110100001011011100101101011110011100100010110111010111010000110110011100111011110100110111011111000100110...

output:

0 69600 22360

result:

points 1.0 n = 99996, D = 69600, L = 22360

Test #22:

score: 100
Accepted
time: 42ms
memory: 9664kb

input:

99995
X Z X Y Y Y X X X Y Z Z Z X Y Y X Y X X Z Z X X Y Y X Z Z X Z Z X Z X X Y Z X X Z Z Y Y Y Y Z Y X X Z Y Z Z Y X X Y Z Y Y Z Z Z X Y X Y Z Z Z Z X Z Z Z Y Z Y Z Z Y X Z Y Y Z Y Y X X Z Y X Y Y Y Y X Y Z X Z Z X Z Y Z Z Z Y X X X Y Z Y Z Y Y Y X Z Z Z Z Z Y Y Z Y X X Y Y X Y X Y Y X Y Z Z X X X ...

output:

69601
010000111000111010100010001100110010000110100010011010110011010010011101111010110001011101001100101000011011000101011111010011001110110000001001100011011001011001101000000000111111001100100010101010011111010111010101110101011000100101101101000000110010010111111001110110111011010111110110001100...

input:

69601
010000111000111010100010001100110010000110100010011010110011010010011101111010110001011101001100101000011011000101011111010011001110110000001001100011011001011001101000000000111111001100100010101010011111010111010101110101011000100101101101000000110010010111111001110110111011010111110110001100...

output:

0 69601 22233

result:

points 1.0 n = 99995, D = 69601, L = 22233

Test #23:

score: 100
Accepted
time: 50ms
memory: 9632kb

input:

99994
Z Z Z X Z Y X Y Y Z X Z X Y Y Y X X X Y Z Y X Z Z Y Z Z Z Z X Z Z Y Y Y Z X Y X Z X Z X X Z X Z Y X Z Y Z X Y X Y X Z X Z Y X Z X X X X X X Y X Z X Y X Z Y X X Z Y Z Y Y Y X Z X X X Y X Z Z X Z X Z Y Y Y Z Z Z X Y X X X Y Z Z Z X X X Y Y Y Z X Z X Y X X Y X Z Y Z X Z Y X X Z X Y Z X X Z Y X X ...

output:

69601
100010000101110101001011011000100100001111000001011010001110001111110101000100000101100101011010000111000111100011110010100011011111111111110010101100101001101111110111111101110011100001100000011110011111011011000100000011011001110101111000001110011111001101111110110111111001000100011011010110...

input:

69601
100010000101110101001011011000100100001111000001011010001110001111110101000100000101100101011010000111000111100011110010100011011111111111110010101100101001101111110111111101110011100001100000011110011111011011000100000011011001110101111000001110011111001101111110110111111001000100011011010110...

output:

0 69601 22316

result:

points 1.0 n = 99994, D = 69601, L = 22316

Test #24:

score: 100
Accepted
time: 54ms
memory: 9560kb

input:

100000
X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X...

output:

69600
100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

input:

69600
100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

output:

0 69600 49999

result:

points 1.0 n = 100000, D = 69600, L = 49999

Test #25:

score: 100
Accepted
time: 66ms
memory: 9632kb

input:

100000
X Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y Z Y...

output:

69601
111100111101101111010001000011001101110010110010100111101010000110001100010100010011100100101101001011000101011010011011110111110001110011101101110000000000111100000010111011111100111101101111010001000011001101110010110010100111101010000110001100010100010011100100101101001011000101011010011011...

input:

69601
111100111101101111010001000011001101110010110010100111101010000110001100010100010011100100101101001011000101011010011011110111110001110011101101110000000000111100000010111011111100111101101111010001000011001101110010110010100111101010000110001100010100010011100100101101001011000101011010011011...

output:

0 69601 49999

result:

points 1.0 n = 100000, D = 69601, L = 49999

Test #26:

score: 100
Accepted
time: 30ms
memory: 9576kb

input:

99999
X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z ...

output:

69600
000101111011011110100010000110011011100101100101001111010100001100011000101000100111001001011010010110001010110100110111101111100011100111011011100000000001111000000101110110001110110101111100100010101110001001010000111010000001110100011101101000001010101111110101100100011100100110000111010011...

input:

69600
000101111011011110100010000110011011100101100101001111010100001100011000101000100111001001011010010110001010110100110111101111100011100111011011100000000001111000000101110110001110110101111100100010101110001001010000111010000001110100011101101000001010101111110101100100011100100110000111010011...

output:

0 69600 33333

result:

points 1.0 n = 99999, D = 69600, L = 33333

Test #27:

score: 100
Accepted
time: 44ms
memory: 9596kb

input:

99998
X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y X Z Y ...

output:

69601
001110110101111100100010101110001001010000111010000001110100011101101000001010101111110101100100011100100110000111010011110000001011101011010011101101010110000011001000100010001000110001011101010001101011010110001101000000101110011010010111110100100110011011000010000001000101101101110000011101...

input:

69601
001110110101111100100010101110001001010000111010000001110100011101101000001010101111110101100100011100100110000111010011110000001011101011010011101101010110000011001000100010001000110001011101010001101011010110001101000000101110011010010111110100100110011011000010000001000101101101110000011101...

output:

0 69601 33332

result:

points 1.0 n = 99998, D = 69601, L = 33332

Test #28:

score: 100
Accepted
time: 50ms
memory: 9668kb

input:

100000
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X...

output:

69600
100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

input:

69600
100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

output:

0 69600 0

result:

points 1.0 n = 100000, D = 69600, L = 0

Test #29:

score: 100
Accepted
time: 46ms
memory: 9832kb

input:

100000
Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y...

output:

69601
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

input:

69601
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

output:

0 69601 0

result:

points 1.0 n = 100000, D = 69601, L = 0

Test #30:

score: 100
Accepted
time: 48ms
memory: 9916kb

input:

100000
Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z...

output:

69601
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

input:

69601
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

output:

0 69601 0

result:

points 1.0 n = 100000, D = 69601, L = 0

Test #31:

score: 100
Accepted
time: 42ms
memory: 9576kb

input:

100000
X Y Z Y Z Y Z Y X Y Z Y X Y Z Y X Y X Y X Y Z Y Z Y Z Y Z Y X Y Z Y X Y Z Y X Y Z Y Z Y X Y Z Y X Y Z Y Z Y X Y X Y X Y Z Y X Y Z Y Z Y Z Y X Y Z Y X Y Z Y X Y X Y X Y X Y X Y Z Y X Y Z Y Z Y X Y X Y X Y X Y Z Y Z Y Z Y X Y Z Y X Y Z Y X Y X Y X Y Z Y X Y Z Y X Y Z Y Z Y X Y X Y Z Y Z Y Z Y X...

output:

69600
111000000101110110011111011011110100100110000000111000101110000100001110110110100000001010000000001001111101001001001010011011011011101000000111110001110011101001101110011010111110001000000000001000101101110011101100101010111000111001010011111111101110101001000001001011101011101101110111001111...

input:

69600
111000000101110110011111011011110100100110000000111000101110000100001110110110100000001010000000001001111101001001001010011011011011101000000111110001110011101001101110011010111110001000000000001000101101110011101100101010111000111001010011111111101110101001000001001011101011101101110111001111...

output:

0 69600 49999

result:

points 1.0 n = 100000, D = 69600, L = 49999

Test #32:

score: 100
Accepted
time: 34ms
memory: 9752kb

input:

100000
X Y X Y Z Y X Y Z Y X Y X Y Z Y Z Y X Y Z Y X Y X Y X Y X Y X Y X Y X Y Z Y X Y Z Y Z Y X Y X Y X Y Z Y Z Y X Y Z Y X Y X Y Z Y X Y X Y X Y X Y X Y Z Y X Y Z Y Z Y X Y X Y Z Y X Y Z Y Z Y X Y X Y Z Y Z Y Z Y X Y Z Y Z Y X Y X Y X Y Z Y Z Y Z Y X Y Z Y Z Y Z Y Z Y X Y Z Y X Y X Y X Y X Y Z Y Z...

output:

69600
010111001101000001111001011011010001111011001010011100110001010000110100111001000001110010010101001001111100100101000001011011111001111101001000001100010000100011110010000100100111111000100011011010110111001100111111101111110001011111101011101011001101001111111111100000111110100011000011010001...

input:

69600
010111001101000001111001011011010001111011001010011100110001010000110100111001000001110010010101001001111100100101000001011011111001111101001000001100010000100011110010000100100111111000100011011010110111001100111111101111110001011111101011101011001101001111111111100000111110100011000011010001...

output:

0 69600 49999

result:

points 1.0 n = 100000, D = 69600, L = 49999

Test #33:

score: 100
Accepted
time: 52ms
memory: 9696kb

input:

100000
X Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y...

output:

69600
100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

input:

69600
100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

output:

0 69600 1

result:

points 1.0 n = 100000, D = 69600, L = 1

Test #34:

score: 100
Accepted
time: 34ms
memory: 9572kb

input:

99998
X Z Y X Z Y X X Y Z X Y Z Z Y X X Y Z Z Y X Z Y X Z Y X X Y Z Z Y X Z Y X X Y Z Z Y X Z Y X Z Y X X Y Z Z Y X X Y Z X Y Z X Y Z X Y Z Z Y X Z Y X Z Y X Z Y X X Y Z Z Y X Z Y X X Y Z Z Y X X Y Z X Y Z Z Y X Z Y X Z Y X X Y Z Z Y X Z Y X Z Y X Z Y X X Y Z X Y Z X Y Z Z Y X X Y Z X Y Z Z Y X X Y ...

output:

69601
000000100110000001000011100100010000001000010100011101100110111111101111111100001011111100000101010001001000000001000111011000111111101100111010011100001001001101001110111100110101001110110111001011101110110110111001110000110000110111000110110011100110100011110000011001110000010001110110110010...

input:

69601
000000100110000001000011100100010000001000010100011101100110111111101111111100001011111100000101010001001000000001000111011000111111101100111010011100001001001101001110111100110101001110110111001011101110110110111001110000110000110111000110110011100110100011110000011001110000010001110110110010...

output:

0 69601 33332

result:

points 1.0 n = 99998, D = 69601, L = 33332

Test #35:

score: 100
Accepted
time: 40ms
memory: 9660kb

input:

99998
X Z Y X Z Y X Z Y X Z Y X X Y Z Z Y X X Y Z Z Y X Z Y X Z Y X X Y Z X Y Z X Y Z X Y Z Z Y X X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z Z Y X Z Y X Z Y X X Y Z X Y Z X Y Z X Y Z X Y Z Z Y X X Y Z Z Y X Z Y X X Y Z X Y Z X Y Z X Y Z X Y Z X Y Z Z Y X Z Y X X Y Z X Y Z Z Y X X Y Z X Y ...

output:

69601
100000010011001000111111110000100101110001011011000110111110101011010011100010001101100010000101100011011000101000011001010101100100110010110100101011000100011010110110101001011101111010011100001011110011101011101001000001010000011100010100011000011011111100101011000110011100101101100110010001...

input:

69601
100000010011001000111111110000100101110001011011000110111110101011010011100010001101100010000101100011011000101000011001010101100100110010110100101011000100011010110110101001011101111010011100001011110011101011101001000001010000011100010100011000011011111100101011000110011100101101100110010001...

output:

0 69601 33332

result:

points 1.0 n = 99998, D = 69601, L = 33332

Test #36:

score: 100
Accepted
time: 56ms
memory: 9948kb

input:

100000
Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y...

output:

69601
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

input:

69601
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

output:

0 69601 0

result:

points 1.0 n = 100000, D = 69601, L = 0

Test #37:

score: 100
Accepted
time: 42ms
memory: 9628kb

input:

100000
X Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y...

output:

69600
100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

input:

69600
100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

output:

0 69600 0

result:

points 1.0 n = 100000, D = 69600, L = 0

Test #38:

score: 100
Accepted
time: 42ms
memory: 9520kb

input:

100000
Z Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y...

output:

69600
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

input:

69600
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

output:

0 69600 0

result:

points 1.0 n = 100000, D = 69600, L = 0

Test #39:

score: 100
Accepted
time: 58ms
memory: 9560kb

input:

100000
X Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y...

output:

69600
100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

input:

69600
100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

output:

0 69600 0

result:

points 1.0 n = 100000, D = 69600, L = 0

Test #40:

score: 100
Accepted
time: 48ms
memory: 9680kb

input:

100000
Z Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y...

output:

69601
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

input:

69601
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

output:

0 69601 0

result:

points 1.0 n = 100000, D = 69601, L = 0

Test #41:

score: 100
Accepted
time: 50ms
memory: 9624kb

input:

100000
Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y...

output:

69600
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

input:

69600
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

output:

0 69600 0

result:

points 1.0 n = 100000, D = 69600, L = 0

Test #42:

score: 100
Accepted
time: 56ms
memory: 9884kb

input:

100000
Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y...

output:

69601
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

input:

69601
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

output:

0 69601 0

result:

points 1.0 n = 100000, D = 69601, L = 0

Test #43:

score: 100
Accepted
time: 50ms
memory: 9608kb

input:

100000
Z Y Z Y Y Y Y Y Z Y Y Y Y Z Z Y X Y X Z Z X Y Y X Z X Y Y Y X Z X Y Z Z Y Y X X Z Y X Z Y Y X Z Y Y Y X Y Z X Y Y Y Y Z Y Y Y Z Y Z X X Y Y Z Y Y Z Z Z Y Z Y Y Y Y Z X Y X Y X X Y Z X X Y Z Y Z X Y Y Y Y Z Y Y Y X Y X Y X Y X Z Y Y X Y Z Z Z Y Y Z X X Z Y Y Y Y X Y Z Y Y Z Y Y X X Z Y Z Z Y Z...

output:

69600
101011011100010101010111100000001011101010111000110010110110011000010111000101110111110010111111001011110111100001011101100011010011110000111111111010011001000001100101101101010111010001111110100000100001111011111001011100101000000100010101000111110011011001111100011100011001000001010100011010...

input:

69600
101011011100010101010111100000001011101010111000110010110110011000010111000101110111110010111111001011110111100001011101100011010011110000111111111010011001000001100101101101010111010001111110100000100001111011111001011100101000000100010101000111110011011001111100011100011001000001010100011010...

output:

0 69600 25013

result:

points 1.0 n = 100000, D = 69600, L = 25013

Test #44:

score: 100
Accepted
time: 42ms
memory: 9688kb

input:

100000
X Z X Y Y X X X X Y Y Z Z Z Z Z Y X X X Y Y Z Y X Y Z Y Y X Y Y X Y Y Y Z X X Y Z X Y Z Y X Y Z Z Z Y Y X Z Y X Y Y Y Y Z Y Y X Y Z Y X X Z Y Y X X Y Y Y Y Y X Y X Z Y Z Y Y Y Z X Y X Y Y X X Z Y Y Y Y Z Y Z Z Z Y Y Y Z Z X Y Y Y Z Z X Y Z Z X X X Z Z Z Z Z Z Z Z Z Y X Z Y Y Z Z Y Y Y Y Y Y X...

output:

69601
010001100000000101011111001011111000011010100110001110011100100011100110111111111110010111010111000110100111100011101001101010100000111011110000001100101101011110110010101000000111001100100001100100001011011110011000100010101010011011011000111100010101100101111111010100110110110001001001110100...

input:

69601
010001100000000101011111001011111000011010100110001110011100100011100110111111111110010111010111000110100111100011101001101010100000111011110000001100101101011110110010101000000111001100100001100100001011011110011000100010101010011011011000111100010101100101111111010100110110110001001001110100...

output:

0 69601 25027

result:

points 1.0 n = 100000, D = 69601, L = 25027

Extra Test:

score: 0
Extra Test Passed