Submission #8614731


Source Code Expand

#include <bits/stdc++.h>
using namespace std;

template<typename T>
struct Segtree {
    int n;
    T e;
    vector<T> dat;
    typedef function<T(T a, T b)> Func;
    Func f;

    Segtree(){}
    Segtree(int n_input, Func f_input, T e_input){
        initialize(n_input, f_input, e_input);
    }
    void initialize(int n_input, Func f_input, T e_input){
        f = f_input;
        e = e_input;
        n = 1;
        while(n < n_input) n <<= 1;
        dat.resize(2*n-1, e);
    }

    void update(int k, T a){
        k += n - 1;
        dat[k] = a;
        while(k > 0){
            k = (k - 1)/2;
            dat[k] = f(dat[2*k+1], dat[2*k+2]);
        }
    }

    T get(int k){
        return dat[k+n-1];
    }

    T between(int a, int b){
        return query(a, b+1, 0, 0, n);
    }

    T query(int a, int b, int k, int l, int r){
        if(r<=a || b<=l) return e;
        if(a<=l && r<=b) return dat[k];
        T vl = query(a, b, 2*k+1, l, (l+r)/2);
        T vr = query(a, b, 2*k+2, (l+r)/2, r);
        return f(vl, vr);
    }
};

void fail(){
    cout << -1 << endl;
    exit(0);
}

int main(){
    int N, M;
    string S;
    cin >> N >> M >> S;
    reverse(S.begin(), S.end());

    Segtree<int> st(N+M+1, [](int a, int b){ return max(a, b); }, 0);
    for(int i=0; i<=N; i++) if(S[i] == '0') st.update(i, i);

    vector<int> pos = {0};
    int p = 0;
    while(p < N){
        int p2 = st.between(p, p+M);
        if(p2 == p) fail();
        p = p2;
        pos.push_back(p);
    }

    reverse(pos.begin(), pos.end());
    int sz = pos.size();
    for(int i=0; i<sz-1; i++) cout << pos[i] - pos[i+1] << " \n"[i==sz-2];
    return 0;
}

Submission Info

Submission Time
Task F - Sugoroku
User betrue12
Language C++14 (GCC 5.4.1)
Score 600
Code Size 1736 Byte
Status AC
Exec Time 34 ms
Memory 2560 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 3
AC × 60
Set Name Test Cases
Sample 00-sample-00, 00-sample-01, 00-sample-02
All 00-sample-00, 00-sample-01, 00-sample-02, 01-handmade-03, 01-handmade-04, 01-handmade-05, 01-handmade-06, 01-handmade-07, 01-handmade-08, 01-handmade-09, 01-handmade-10, 02-random-11, 02-random-12, 02-random-13, 02-random-14, 02-random-15, 02-random-16, 02-random-17, 02-random-18, 02-random-19, 02-random-20, 02-random-21, 02-random-22, 02-random-23, 02-random-24, 02-random-25, 02-random-26, 02-random-27, 02-random-28, 02-random-29, 02-random-30, 02-random-31, 02-random-32, 02-random-33, 02-random-34, 02-random-35, 02-random-36, 02-random-37, 02-random-38, 02-random-39, 02-random-40, 02-random-41, 02-random-42, 02-random-43, 02-random-44, 02-random-45, 02-random-46, 02-random-47, 02-random-48, 02-random-49, 02-random-50, 02-random-51, 02-random-52, 02-random-53, 02-random-54, 02-random-55, 02-random-56, 02-random-57, 02-random-58, 02-random-59
Case Name Status Exec Time Memory
00-sample-00 AC 1 ms 256 KiB
00-sample-01 AC 1 ms 256 KiB
00-sample-02 AC 1 ms 256 KiB
01-handmade-03 AC 1 ms 256 KiB
01-handmade-04 AC 12 ms 1536 KiB
01-handmade-05 AC 14 ms 1536 KiB
01-handmade-06 AC 8 ms 1536 KiB
01-handmade-07 AC 5 ms 2560 KiB
01-handmade-08 AC 8 ms 1536 KiB
01-handmade-09 AC 34 ms 2168 KiB
01-handmade-10 AC 18 ms 1792 KiB
02-random-11 AC 11 ms 2560 KiB
02-random-12 AC 11 ms 1536 KiB
02-random-13 AC 11 ms 1536 KiB
02-random-14 AC 11 ms 1536 KiB
02-random-15 AC 10 ms 2560 KiB
02-random-16 AC 14 ms 1536 KiB
02-random-17 AC 10 ms 1536 KiB
02-random-18 AC 9 ms 1536 KiB
02-random-19 AC 10 ms 2560 KiB
02-random-20 AC 9 ms 1536 KiB
02-random-21 AC 10 ms 1536 KiB
02-random-22 AC 10 ms 1536 KiB
02-random-23 AC 10 ms 2560 KiB
02-random-24 AC 10 ms 1536 KiB
02-random-25 AC 9 ms 1536 KiB
02-random-26 AC 9 ms 1536 KiB
02-random-27 AC 9 ms 2560 KiB
02-random-28 AC 8 ms 1536 KiB
02-random-29 AC 8 ms 1536 KiB
02-random-30 AC 9 ms 1536 KiB
02-random-31 AC 10 ms 2560 KiB
02-random-32 AC 9 ms 1536 KiB
02-random-33 AC 8 ms 1536 KiB
02-random-34 AC 8 ms 1536 KiB
02-random-35 AC 9 ms 2560 KiB
02-random-36 AC 8 ms 1536 KiB
02-random-37 AC 8 ms 1536 KiB
02-random-38 AC 7 ms 1536 KiB
02-random-39 AC 7 ms 1536 KiB
02-random-40 AC 8 ms 1536 KiB
02-random-41 AC 7 ms 1536 KiB
02-random-42 AC 7 ms 1536 KiB
02-random-43 AC 8 ms 2560 KiB
02-random-44 AC 7 ms 1536 KiB
02-random-45 AC 7 ms 1536 KiB
02-random-46 AC 7 ms 1536 KiB
02-random-47 AC 7 ms 2560 KiB
02-random-48 AC 6 ms 1536 KiB
02-random-49 AC 6 ms 1536 KiB
02-random-50 AC 6 ms 1536 KiB
02-random-51 AC 6 ms 1536 KiB
02-random-52 AC 6 ms 1536 KiB
02-random-53 AC 6 ms 1536 KiB
02-random-54 AC 6 ms 1536 KiB
02-random-55 AC 5 ms 1536 KiB
02-random-56 AC 5 ms 1536 KiB
02-random-57 AC 5 ms 1536 KiB
02-random-58 AC 5 ms 1536 KiB
02-random-59 AC 5 ms 2560 KiB