Task: | Sorting |
Sender: | qpwoeirut |
Submission time: | 2021-01-30 09:14:35 +0200 |
Language: | C++ (C++17) |
Status: | READY |
Result: | 0 |
group | verdict | score |
---|---|---|
#1 | TIME LIMIT EXCEEDED | 0 |
#2 | TIME LIMIT EXCEEDED | 0 |
test | verdict | time | group | |
---|---|---|---|---|
#1 | ACCEPTED | 0.01 s | 1, 2 | details |
#2 | TIME LIMIT EXCEEDED | -- | 2 | details |
#3 | ACCEPTED | 0.15 s | 1, 2 | details |
#4 | TIME LIMIT EXCEEDED | -- | 1, 2 | details |
Code
//sorting.cpp created at 01/29/21 21:00:48 #include <bits/stdc++.h> using namespace std; const int MN = 101; int N; int A[MN], B[MN]; void solve() { } int pack() { int ret = 0; for (int i=0; i<N; ++i) { ret *= 10; ret += B[i]; } return ret; } void unpack(int ret) { for (int i=N-1; i>=0; --i) { B[i] = ret % 10; ret /= 10; } } set<int> seen; bool brute() { copy(A, A+N, B); seen.clear(); const int start = pack(); for (int i=0; i<N; ++i) { B[i] = i+1; } const int tar = pack(); queue<int> q; q.push(start); seen.insert(start); while (q.size() > 0) { const int cur = q.front(); q.pop(); if (cur == tar) { return true; } for (int i=0; i+1<N; ++i) { for (int j=i+2; j+1<N; ++j) { unpack(cur); swap(B[i], B[j]); swap(B[i+1], B[j+1]); const int nxt = pack(); if (seen.insert(nxt).second == true) { q.push(nxt); } } } } return false; } int main() { cin.tie(0)->sync_with_stdio(0); int T; cin >> T; for (int t=1; t<=T; ++t) { cin >> N; for (int i=0; i<N; ++i) { cin >> A[i]; } cout << (brute() ? "YES\n" : "NO\n"); } }
Test details
Test 1
Group: 1, 2
Verdict: ACCEPTED
input |
---|
153 1 1 2 1 2 ... |
correct output |
---|
YES YES NO NO NO ... |
user output |
---|
YES YES NO NO NO ... Truncated |
Test 2
Group: 2
Verdict: TIME LIMIT EXCEEDED
input |
---|
1000 59 35 29 32 50 11 15 9 21 19 45 2... |
correct output |
---|
YES NO YES NO YES ... |
user output |
---|
(empty) |
Test 3
Group: 1, 2
Verdict: ACCEPTED
input |
---|
720 6 1 6 4 5 2 3 6 6 3 2 1 5 4 ... |
correct output |
---|
YES NO NO NO YES ... |
user output |
---|
YES NO NO NO YES ... Truncated |
Test 4
Group: 1, 2
Verdict: TIME LIMIT EXCEEDED
input |
---|
1000 8 7 4 2 8 6 3 5 1 8 3 8 2 7 5 4 6 1 ... |
correct output |
---|
NO NO YES NO YES ... |
user output |
---|
(empty) |