| Task: | Period |
| Sender: | sspilsbury |
| Submission time: | 2020-09-26 15:21:24 +0300 |
| Language: | C++ (C++11) |
| Status: | READY |
| Result: | ACCEPTED |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.01 s | details |
| #2 | ACCEPTED | 0.01 s | details |
| #3 | ACCEPTED | 0.01 s | details |
| #4 | ACCEPTED | 0.01 s | details |
| #5 | ACCEPTED | 0.01 s | details |
| #6 | ACCEPTED | 0.01 s | details |
| #7 | ACCEPTED | 0.01 s | details |
| #8 | ACCEPTED | 0.01 s | details |
| #9 | ACCEPTED | 0.01 s | details |
| #10 | ACCEPTED | 0.01 s | details |
| #11 | ACCEPTED | 0.01 s | details |
| #12 | ACCEPTED | 0.01 s | details |
| #13 | ACCEPTED | 0.01 s | details |
| #14 | ACCEPTED | 0.01 s | details |
| #15 | ACCEPTED | 0.01 s | details |
| #16 | ACCEPTED | 0.01 s | details |
| #17 | ACCEPTED | 0.01 s | details |
| #18 | ACCEPTED | 0.01 s | details |
| #19 | ACCEPTED | 0.01 s | details |
| #20 | ACCEPTED | 0.01 s | details |
| #21 | ACCEPTED | 0.01 s | details |
Compiler report
input/code.cpp: In function 'int main()':
input/code.cpp:14:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int i = 1; i < str.size(); ++i) {
~~^~~~~~~~~~~~Code
#include <vector>
#include <string>
#include <algorithm>
#include <unordered_set>
#include <iostream>
int main(void)
{
std::string str;
std::cin >> str;
int shortest = 1;
for (int i = 1; i < str.size(); ++i) {
if (str[i - shortest] == str[i]) {
continue;
} else {
shortest = i + 1;
}
}
std::cout << str.substr(0, shortest) << std::endl;
return 0;
}
#if 0
template <typename T>
void print_array(std::vector<T> const &v) {
for (auto x: v) {
std::cout << x << " ";
}
std::cout << std::endl;
}
// Small modification to return also the
// sorted array of valid lengths
void zarr(std::string const &s, std::vector<int> &z, std::vector<int> &lengths) {
int n = s.size();
int x = 0, y = 0;
std::unordered_set<int> lengths_set;
for (int i = 1; i < n; ++i) {
z[i] = std::max(0, std::min(z[i - x], y - i + i));
while (i + z[i] < n && s[z[i]] == s[i + z[i]]) {
x = i; y = i + z[i]; z[i]++;
}
if (z[i] != 0) {
lengths_set.insert(z[i]);
}
}
for (int l : lengths_set) {
lengths.push_back(l);
}
std::sort(lengths.begin(), lengths.end());
}
int main(void) {
std::string str;
std::cin >> str;
std::vector<int> z(str.size());
std::vector<int> lengths;
zarr(str, z, lengths);
print_array(z);
// Now that we have the z-array, we can simply check if
// a substring is periodic by watching it repeat throughout
// the string.
for (auto i: lengths) {
int p = 0;
bool found = true;
while (p + i < str.size()) {
p += i;
// How much do we have left?
int remaining = std::min(i, (int) (str.size() - p));
// Do we see this repeat? If so we can keep going
if (z[p] != remaining) {
found = false;
break;
}
}
if (found) {
std::cout << str.substr(0, i) << std::endl;
break;
}
}
// No repeating periods, print entire string
std::cout << str << std::endl;
return 0;
}
#endifTest details
Test 1
Verdict: ACCEPTED
| input |
|---|
| acbacbac |
| correct output |
|---|
| acb |
| user output |
|---|
| acb |
Test 2
Verdict: ACCEPTED
| input |
|---|
| a |
| correct output |
|---|
| a |
| user output |
|---|
| a |
Test 3
Verdict: ACCEPTED
| input |
|---|
| z |
| correct output |
|---|
| z |
| user output |
|---|
| z |
Test 4
Verdict: ACCEPTED
| input |
|---|
| aa |
| correct output |
|---|
| a |
| user output |
|---|
| a |
Test 5
Verdict: ACCEPTED
| input |
|---|
| az |
| correct output |
|---|
| az |
| user output |
|---|
| az |
Test 6
Verdict: ACCEPTED
| input |
|---|
| aba |
| correct output |
|---|
| ab |
| user output |
|---|
| ab |
Test 7
Verdict: ACCEPTED
| input |
|---|
| abab |
| correct output |
|---|
| ab |
| user output |
|---|
| ab |
Test 8
Verdict: ACCEPTED
| input |
|---|
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... |
| correct output |
|---|
| a |
| user output |
|---|
| a |
Test 9
Verdict: ACCEPTED
| input |
|---|
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... |
| correct output |
|---|
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... |
| user output |
|---|
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... Truncated |
Test 10
Verdict: ACCEPTED
| input |
|---|
| ababababababababababababababab... |
| correct output |
|---|
| ab |
| user output |
|---|
| ab |
Test 11
Verdict: ACCEPTED
| input |
|---|
| tgainzxtgainzxtgainzxtgainzxtg... |
| correct output |
|---|
| tgainzx |
| user output |
|---|
| tgainzx |
Test 12
Verdict: ACCEPTED
| input |
|---|
| qmuflfcbqweunsjsodgspftyvikiwk... |
| correct output |
|---|
| qmuflfcbqweunsjsodgspftyvikiwk... |
| user output |
|---|
| qmuflfcbqweunsjsodgspftyvikiwk... |
Test 13
Verdict: ACCEPTED
| input |
|---|
| ohbsbconrkytyhtmibzrwwqdsqojoe... |
| correct output |
|---|
| ohbsbconrkytyhtmibzrwwqdsqojoe... |
| user output |
|---|
| ohbsbconrkytyhtmibzrwwqdsqojoe... Truncated |
Test 14
Verdict: ACCEPTED
| input |
|---|
| hxkuxccasglgpvnfnhdoqelpvxughq... |
| correct output |
|---|
| hxkuxccasglgpvnfnhdoqelpvxughq... |
| user output |
|---|
| hxkuxccasglgpvnfnhdoqelpvxughq... Truncated |
Test 15
Verdict: ACCEPTED
| input |
|---|
| mhwvddomkxrzuziwbfoaqxzjmfevla... |
| correct output |
|---|
| mhwvddomkxrzuziwbfoaqxzjmfevla... |
| user output |
|---|
| mhwvddomkxrzuziwbfoaqxzjmfevla... Truncated |
Test 16
Verdict: ACCEPTED
| input |
|---|
| gnruvsfdjemxstfuysiqkrtwbgtono... |
| correct output |
|---|
| gnruvsfdjemxstfuysiqkrtwbgtono... |
| user output |
|---|
| gnruvsfdjemxstfuysiqkrtwbgtono... Truncated |
Test 17
Verdict: ACCEPTED
| input |
|---|
| xqiwjzftugyurtwsziffnqaeozescu... |
| correct output |
|---|
| xqiwjzftugyurtwsziffnqaeozescu... |
| user output |
|---|
| xqiwjzftugyurtwsziffnqaeozescu... Truncated |
Test 18
Verdict: ACCEPTED
| input |
|---|
| vgygtamnegxyxvjbuceoliipbkggyw... |
| correct output |
|---|
| vgygtamnegxyxvjbuceoliipbkggyw... |
| user output |
|---|
| vgygtamnegxyxvjbuceoliipbkggyw... Truncated |
Test 19
Verdict: ACCEPTED
| input |
|---|
| qvjhmaafzlugwwaygdojysrjoydnnj... |
| correct output |
|---|
| qvjhmaafzlugwwaygdojysrjoydnnj... |
| user output |
|---|
| qvjhmaafzlugwwaygdojysrjoydnnj... Truncated |
Test 20
Verdict: ACCEPTED
| input |
|---|
| tusmizkjfdazyohorfcumwmalodvnc... |
| correct output |
|---|
| tusmizkjfdazyohorfcumwmalodvnc... |
| user output |
|---|
| tusmizkjfdazyohorfcumwmalodvnc... Truncated |
Test 21
Verdict: ACCEPTED
| input |
|---|
| zqikxaoeizncpvlpcvomrdkstackqq... |
| correct output |
|---|
| zqikxaoeizncpvlpcvomrdkstackqq... |
| user output |
|---|
| zqikxaoeizncpvlpcvomrdkstackqq... Truncated |
