CSES - HIIT Open 2018 - Results
Submission details
Task:Letter Game
Sender:Wave of Technology
Submission time:2018-05-26 15:59:39 +0300
Language:C++
Status:READY
Result:
Test results
testverdicttime
#1ACCEPTED0.01 sdetails
#2ACCEPTED0.01 sdetails
#3ACCEPTED0.01 sdetails
#4ACCEPTED0.01 sdetails
#5ACCEPTED0.01 sdetails
#6ACCEPTED0.01 sdetails
#7ACCEPTED0.01 sdetails
#8ACCEPTED0.01 sdetails
#9ACCEPTED0.02 sdetails
#100.01 sdetails
#110.01 sdetails
#120.01 sdetails
#130.01 sdetails
#140.01 sdetails
#150.01 sdetails
#160.01 sdetails
#170.01 sdetails
#180.01 sdetails
#190.01 sdetails

Compiler report

input/code.cpp: In function 'll solve()':
input/code.cpp:23:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }
 ^
input/code.cpp: In function 'int main()':
input/code.cpp:89:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if (res.size() != i) { continue; }
         ~~~~~~~~~~~^~~~
input/code.cpp:100:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if (res.size() != i) { continue; }
         ~~~~~~~~~~~^~~~

Code

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef pair<ll, ll> PLL;

const ll INF = 1000000000000000LL;

ll n;

template<typename T>
void print_vector(vector<T> & v) {
  for (auto x : v) {
    cout << x << " ";
  }
}

ll solve() {
  ll n, m;
  cin >> n >> m;

}


bool test(string s) {
  bool  bfound = false;
  for (auto c : s) {
    if (c=='B') { bfound = true; }
    if (bfound && c == 'A') { return false;}
  }
  return true;
}

int main() {

  cin.tie(NULL);
  std::ios::sync_with_stdio(false);


  ll n;

  cin >> n;
  string s;
  cin >> s;

  if (n==1) {
    cout << "0\n";
    return 0;
  }
  if (n==2) {
    for (char c : s) {
      if (c=='A') {
	cout << "0\n";
	return 0;
      }
      if (c=='B') {
	cout << "-1\n";
	return 0;
      }
    }
  }


  n = 2*n;
  
  vector<string> res;

  for (int i=0; i<1000; i++) {

    int xpos = 0;
    
    for (int j=0; j<n; j++) {
      if (s[j] == '.') {
	xpos = j;
	break;
      }
    }


    for (int j=0; j<xpos; j++) {
      if (s[j] == 'B' && s[j+1] == 'B') {
	swap(s[j], s[xpos]);
	swap(s[j+1], s[xpos+1]);
	res.push_back(s);
	break;
      }
    }
    if (res.size() != i) { continue; }

    for (int j=xpos; j<n-1; j++) {
      if (s[j] == 'A' && s[j+1] == 'A') {
	swap(s[j], s[xpos]);
	swap(s[j+1], s[xpos+1]);
	res.push_back(s);
	break;
      }
    }
    
    if (res.size() != i) { continue; }


    while(true) {
      int j = rand() % (n-1);
      //      cout << j << " " << xpos << endl;
      if (abs(j-xpos) >=2) {
	swap(s[j], s[xpos]);
	swap(s[j+1], s[xpos+1]);
	res.push_back(s);
	break;
      }
    }

    if (test(res.back())) { break; }

  }

  if (!test(res.back())) { cout << -1 << endl; return 0; }
  cout << res.size() << endl;

  for (auto ss : res) {
    cout << ss << endl;
  }
  return 0;
}

Test details

Test 1

Verdict: ACCEPTED

input
1
..

correct output
0

user output
0

Test 2

Verdict: ACCEPTED

input
2
A..B

correct output
0

user output
0

Test 3

Verdict: ACCEPTED

input
2
B..A

correct output
-1

user output
-1

Test 4

Verdict: ACCEPTED

input
3
AA..BB

correct output
0

user output
1
..AABB

Test 5

Verdict: ACCEPTED

input
3
AB..AB

correct output
-1

user output
-1

Test 6

Verdict: ACCEPTED

input
3
AB..BA

correct output
2
ABBA..
A..ABB

user output
9
..ABBA
BBA..A
..ABBA
AB..BA
...

Test 7

Verdict: ACCEPTED

input
3
BA..AB

correct output
2
..BAAB
AAB..B

user output
5
..BAAB
AAB..B
..BAAB
AAB..B
...

Test 8

Verdict: ACCEPTED

input
3
BA..BA

correct output
-1

user output
-1

Test 9

Verdict: ACCEPTED

input
3
BB..AA

correct output
2
..BBAA
AABB..

user output
4
..BBAA
AABB..
AA..BB
..AABB

Test 10

Verdict:

input
100
BBABAABBBAAAAABBBBBBAAAABAAABA...

correct output
140
..ABAABBBAAAAABBBBBBAAAABAAABA...

user output
-1

Test 11

Verdict:

input
100
AABBABBAAABABBBBBBBBAABABAAAAB...

correct output
142
AA..ABBAAABABBBBBBBBAABABAAAAB...

user output
-1

Test 12

Verdict:

input
100
AAAAABAABBBABAABAAABABBAAAABAA...

correct output
134
AAAAA..ABBBABAABAAABABBAAAABAA...

user output
-1

Test 13

Verdict:

input
100
BBBAAAABAABABAABAABBBABBABABAA...

correct output
142
..BAAAABAABABAABAABBBABBABABAA...

user output
-1

Test 14

Verdict:

input
100
BABBBAAAAABABAAABBBAABBABABBBB...

correct output
138
..BBBAAAAABABAAABBBAABBABABBBB...

user output
-1

Test 15

Verdict:

input
100
ABAAAAABBAAAAAAAAAABABAABBBBBB...

correct output
126
A..AAAABBAAAAAAAAAABABAABBBBBB...

user output
-1

Test 16

Verdict:

input
100
ABBBBBABBABABABBBABAABAAAABBAA...

correct output
128
A..BBBABBABABABBBABAABAAAABBAA...

user output
-1

Test 17

Verdict:

input
100
BAAABBABBAAAABABAAABABABBAAABA...

correct output
139
..AABBABBAAAABABAAABABABBAAABA...

user output
-1

Test 18

Verdict:

input
100
BBBBBABBAAABBAABBBBBABABABAABA...

correct output
133
..BBBABBAAABBAABBBBBABABABAABA...

user output
-1

Test 19

Verdict:

input
100
BABBBBBBABBBABBBBBBAABABAAABAA...

correct output
128
..BBBBBBABBBABBBBBBAABABAAABAA...

user output
-1