Submission #50726374
Source Code Expand
#include <bits/stdc++.h>
#include <atcoder/modint>
namespace {
using ModInt [[maybe_unused]] = atcoder::modint998244353;
using Num [[maybe_unused]] = long long int;
using Vec [[maybe_unused]] = std::vector<Num>;
using Set [[maybe_unused]] = std::set<Num>;
using Mset [[maybe_unused]] = std::multiset<Num>;
using Edges [[maybe_unused]] = std::vector<std::vector<Num>>;
template<typename T>
using Q [[maybe_unused]] = std::queue<T>;
template<typename T>
using PQ [[maybe_unused]] = std::priority_queue<T, std::vector<T>, std::greater<T>>;
}
void solve(std::istream& is, std::ostream& os) {
Num loop {0};
is >> loop;
while(loop-- > 0) {
Num n, k;
std::string s;
is >> n >> k >> s;
char prev = '0';
std::vector<std::pair<Num, Num>> runs;
Num n_ones {0};
for(size_t i{0}; i<s.size(); ++i) {
const auto c = s.at(i);
if (c != '0') {
if (prev == '0') {
runs.push_back(std::make_pair(i, 1));
} else {
runs.back().second += 1;
}
}
n_ones += (c == '1');
prev = c;
}
std::vector<size_t> ids;
for(size_t i{0}; i<runs.size(); ++i) {
const auto& [left, len] = runs.at(i);
Num n1 {0};
for(Num j{left}; j<(left+len); ++j) {
n1 += (s.at(j) == '1');
}
if (n1 > 0) {
ids.push_back(i);
}
}
if (ids.size() > 1) {
os << "No\n";
continue;
}
Num found {0};
for(size_t id{0}; id<runs.size(); ++id) {
const auto& [left, len] = runs.at(id);
if (len < k) {
continue;
}
if (!ids.empty() && (ids.at(0) != id)) {
continue;
}
Vec cumsum {0};
for(Num i{left}; i<(left+len); ++i) {
Num b = 0 + (s.at(i) == '1');
cumsum.push_back(cumsum.back() + b);
}
for(Num i{0}; i<=(len-k); ++i) {
const Num left = cumsum.at(i);
const Num right = cumsum.back() - cumsum.at(i+k);
if ((left == 0) && (right == 0)) {
++found;
}
}
}
if (found == 1) {
os << "Yes\n";
} else {
os << "No\n";
}
}
}
int main(void) {
solve(std::cin, std::cout);
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | A - Continuous 1 |
| User | zettsut |
| Language | C++ 20 (gcc 12.2) |
| Score | 300 |
| Code Size | 2699 Byte |
| Status | AC |
| Exec Time | 28 ms |
| Memory | 7840 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 300 / 300 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | 00-sample-001.txt |
| All | 00-sample-001.txt, 01-all-001.txt, 01-all-002.txt, 01-all-003.txt, 01-all-004.txt, 02-multi-001.txt, 02-multi-002.txt, 02-multi-003.txt, 02-multi-004.txt, 02-multi-005.txt, 02-multi-006.txt, 02-multi-007.txt, 02-multi-008.txt, 02-multi-009.txt, 02-multi-010.txt, 03-max-001.txt, 03-max-002.txt, 03-max-003.txt, 03-max-004.txt, 03-max-005.txt, 03-max-006.txt, 03-max-007.txt, 03-max-008.txt, 04-test-001.txt, 04-test-002.txt, 04-test-003.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 00-sample-001.txt | AC | 1 ms | 3492 KiB |
| 01-all-001.txt | AC | 8 ms | 3456 KiB |
| 01-all-002.txt | AC | 22 ms | 3404 KiB |
| 01-all-003.txt | AC | 12 ms | 3456 KiB |
| 01-all-004.txt | AC | 28 ms | 3504 KiB |
| 02-multi-001.txt | AC | 7 ms | 4152 KiB |
| 02-multi-002.txt | AC | 6 ms | 4296 KiB |
| 02-multi-003.txt | AC | 7 ms | 4212 KiB |
| 02-multi-004.txt | AC | 6 ms | 4236 KiB |
| 02-multi-005.txt | AC | 6 ms | 4132 KiB |
| 02-multi-006.txt | AC | 6 ms | 3888 KiB |
| 02-multi-007.txt | AC | 6 ms | 3812 KiB |
| 02-multi-008.txt | AC | 6 ms | 3900 KiB |
| 02-multi-009.txt | AC | 6 ms | 3740 KiB |
| 02-multi-010.txt | AC | 6 ms | 4116 KiB |
| 03-max-001.txt | AC | 7 ms | 5664 KiB |
| 03-max-002.txt | AC | 8 ms | 6184 KiB |
| 03-max-003.txt | AC | 6 ms | 4708 KiB |
| 03-max-004.txt | AC | 8 ms | 5888 KiB |
| 03-max-005.txt | AC | 8 ms | 7840 KiB |
| 03-max-006.txt | AC | 8 ms | 7676 KiB |
| 03-max-007.txt | AC | 5 ms | 3812 KiB |
| 03-max-008.txt | AC | 7 ms | 5736 KiB |
| 04-test-001.txt | AC | 8 ms | 7780 KiB |
| 04-test-002.txt | AC | 8 ms | 7784 KiB |
| 04-test-003.txt | AC | 8 ms | 7832 KiB |