| Task: | Rotations |
| Sender: | Ollie |
| Submission time: | 2016-10-22 20:00:32 +0300 |
| Language: | C++ |
| Status: | READY |
| Result: | TIME LIMIT EXCEEDED |
| test | verdict | time | |
|---|---|---|---|
| #1 | TIME LIMIT EXCEEDED | -- | details |
| #2 | TIME LIMIT EXCEEDED | -- | details |
| #3 | ACCEPTED | 0.41 s | details |
| #4 | ACCEPTED | 0.43 s | details |
| #5 | ACCEPTED | 0.38 s | details |
| #6 | TIME LIMIT EXCEEDED | -- | details |
| #7 | TIME LIMIT EXCEEDED | -- | details |
| #8 | UNKNOWN | -- | details |
| #9 | UNKNOWN | -- | details |
| #10 | UNKNOWN | -- | details |
| #11 | UNKNOWN | -- | details |
| #12 | UNKNOWN | -- | details |
Compiler report
input/code.cpp: In function 'int main()':
input/code.cpp:40:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
while(s.length()-vec[i]<rl) i++;
^Code
#include <bits/stdc++.h>
using namespace std;
vector<int> suffix_array(string& str) {
if(str.length()==0)
return vector<int>();
vector<int> cur;
for(auto c : str) cur.push_back(c);
int n = cur.size();
for(int length=1;;length*=2) {
vector<pair<pair<int,int>,int>> pairs(n); // pair, original, position index
for(int i=0;i<n;i++) {
pair<int,int> new_pair = {cur[i], i+length<n?cur[i+length]:-1};
pairs[i] = {new_pair, i};
}
sort(pairs.begin(), pairs.end());
int code = 0;
for(int i=0;i<n;i++) {
if(i!=0&&pairs[i].first!=pairs[i-1].first)
code++;
cur[pairs[i].second]=code;
}
if(code==n-1) {
vector<int> result(n);
for(int i=0;i<n;i++)
result[i] = pairs[i].second;
return result;
}
}
}
int main() {
string s;
cin >> s;
int rl = s.length(), i=0;
s += s;
auto vec = suffix_array(s);
while(s.length()-vec[i]<rl) i++;
cout << s.substr(vec[i], rl) << endl;
return 0;
}Test details
Test 1
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... |
| correct output |
|---|
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... |
| user output |
|---|
| (empty) |
Test 2
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb... |
| correct output |
|---|
| abbbbbbbbbbbbbbbbbbbbbbbbbbbbb... |
| user output |
|---|
| (empty) |
Test 3
Verdict: ACCEPTED
| input |
|---|
| jibanqfglkmsywdlqjquxxnqeyhbyu... |
| correct output |
|---|
| aaadptqmkuqxnvmojzhghqtfztbwsj... |
| user output |
|---|
| aaadptqmkuqxnvmojzhghqtfztbwsj... Truncated |
Test 4
Verdict: ACCEPTED
| input |
|---|
| muykjgvsstkgydmumitbgvsbtgyvmv... |
| correct output |
|---|
| aaaeaeipiqglrtbzelgrqmrxqbnjke... |
| user output |
|---|
| aaaeaeipiqglrtbzelgrqmrxqbnjke... Truncated |
Test 5
Verdict: ACCEPTED
| input |
|---|
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... |
| correct output |
|---|
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... |
| user output |
|---|
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... Truncated |
Test 6
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| aaaaaaaaabaaaaaaaaabaaaaaaaaab... |
| correct output |
|---|
| aaaaaaaaabaaaaaaaaabaaaaaaaaab... |
| user output |
|---|
| (empty) |
Test 7
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| jtcbpjizbiauauipwsdteaisynwesj... |
| correct output |
|---|
| aisynwesjvtvgghnbqyqprwpfqayzl... |
| user output |
|---|
| (empty) |
Test 8
Verdict: UNKNOWN
| input |
|---|
| a |
| correct output |
|---|
| a |
| user output |
|---|
| (not available) |
Test 9
Verdict: UNKNOWN
| input |
|---|
| ab |
| correct output |
|---|
| ab |
| user output |
|---|
| (not available) |
Test 10
Verdict: UNKNOWN
| input |
|---|
| ba |
| correct output |
|---|
| ab |
| user output |
|---|
| (not available) |
Test 11
Verdict: UNKNOWN
| input |
|---|
| home |
| correct output |
|---|
| ehom |
| user output |
|---|
| (not available) |
Test 12
Verdict: UNKNOWN
| input |
|---|
| baaaaaaaaaaaaaaaaaaaaaaaaaaaaa... |
| correct output |
|---|
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... |
| user output |
|---|
| (not available) |
