Submission #68314

# Submission time Handle Problem Language Result Execution time Memory
68314 2018-08-16T15:59:37 Z aome parentrises (BOI18_parentrises) C++17
0 / 100
2 ms 488 KB
#include <bits/stdc++.h>

using namespace std;

namespace Task1 {
	char color[1000005];

	void solve() {
		int q; cin >> q;
		while (q--) {
			string s; cin >> s;
			stack<int> st;
			stack<int> st2;
			stack<int> st3;
			bool fail = 0;
			for (int i = 0; i < s.size(); ++i) {
				if (s[i] == '(') st.push(i), color[i] = 'G';
				else {
					if (st.size()) {
						st2.push(i), color[i] = 'G', st3.push(st.top()), st.pop();
					}
					else {
						if (!st2.size()) { fail = 1; break; }
						color[i] = 'R', color[st2.top()] = 'B', st2.pop(), st3.pop();
					}
				}
			}
			while (st.size() && st3.size()) {
				color[st.top()] = 'R', color[st3.top()] = 'B';
				st.pop(), st3.pop();
			}
			while (st.size()) st.pop();
			while (st2.size()) st2.pop();
			for (int i = 0; i < s.size(); ++i) {
				if (s[i] == '(') {
					if (color[i] == 'G' || color[i] == 'R') st.push(i);
					else st2.push(i);
				}
				else {
					if (color[i] == 'G' || color[i] == 'R') {
						if (!st.size()) { fail = 1; break; }
						st.pop();
					}
					if (color[i] == 'G' || color[i] == 'B') {
						if (!st2.size()) { fail = 1; break; }
						st2.pop();
					}
				}
			}
			if (fail) cout << "impossible\n";
			else {
				for (int i = 0; i < s.size(); ++i) cout << color[i]; cout << '\n';
			}
		}
	}
}

namespace Task2 {
	void solve() {

	}
}

int main() {
	ios::sync_with_stdio(false);
	int P; cin >> P;
	if (P == 1) Task1::solve();
	else Task2::solve();
}

Compilation message

parentrises.cpp: In function 'void Task1::solve()':
parentrises.cpp:16:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    for (int i = 0; i < s.size(); ++i) {
                    ~~^~~~~~~~~~
parentrises.cpp:34:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    for (int i = 0; i < s.size(); ++i) {
                    ~~^~~~~~~~~~
parentrises.cpp:52:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < s.size(); ++i) cout << color[i]; cout << '\n';
                     ~~^~~~~~~~~~
parentrises.cpp:52:5: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
     for (int i = 0; i < s.size(); ++i) cout << color[i]; cout << '\n';
     ^~~
parentrises.cpp:52:58: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
     for (int i = 0; i < s.size(); ++i) cout << color[i]; cout << '\n';
                                                          ^~~~
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 376 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 488 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 488 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 488 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 488 KB Unexpected end of file - int32 expected
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 488 KB Unexpected end of file - int32 expected
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 488 KB Unexpected end of file - int32 expected