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 |
|
|
| 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 |