제출 #255225

#제출 시각아이디문제언어결과실행 시간메모리
255225Kastandaparentrises (BOI18_parentrises)C++11
50 / 100
70 ms7540 KiB
// M
#include<bits/stdc++.h>
using namespace std;
const int N = 1000006;
int n, q, Sub;
char S[N];
void SolveSub1()
{
        scanf("%d", &q);
        for (; q; q --)
        {
                scanf("%s", S);
                n = strlen(S);
                vector < int > C(n, 0), Stk, OP;
                for (int i = 0; i < n; i ++)
                {
                        if (S[i] == '(')
                                Stk.push_back(i);
                        else if (Stk.size())
                                C[Stk.back()] = C[i] = 1, Stk.pop_back();
                        else
                                OP.push_back(i);
                }
                bool Fail = 0;
                vector < int > Kts, PO;
                for (int i = n - 1; ~ i; i --)
                {
                        if (Stk.size())
                        {
                                if (Stk.back() == i)
                                {
                                        if (!Kts.size())
                                                {Fail = 1; break;}
                                        C[Kts.back()] += 2;
                                        Kts.pop_back();
                                        C[Stk.back()] += 2;
                                        Stk.pop_back();
                                        continue;
                                }
                                if (S[i] == '(')
                                        continue;
                                Kts.push_back(i);
                        }
                        else
                        {
                                if (OP.size() && OP.back() == i)
                                {
                                        PO.push_back(OP.back());
                                        OP.pop_back();
                                        continue;
                                }
                                if (S[i] == ')')
                                        continue;
                                if (PO.size())
                                {
                                        C[PO.back()] += 2;
                                        PO.pop_back();
                                        C[i] += 2;
                                }
                        }
                }
                if (PO.size() || OP.size() || Stk.size())
                        Fail = 1;
                fill(S, S + n, 0);
                if (Fail)
                        printf("impossible\n");
                else
                {
                        for (int i = 0; i < n; i ++)
                                printf("%c", "RBG"[C[i] - 1]);
                        printf("\n");
                }
        }
        exit(0);
}
int main()
{
        scanf("%d", &Sub);
        if (Sub == 1)
                SolveSub1();
}

컴파일 시 표준 에러 (stderr) 메시지

parentrises.cpp: In function 'void SolveSub1()':
parentrises.cpp:9:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d", &q);
         ~~~~~^~~~~~~~~~
parentrises.cpp:12:22: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
                 scanf("%s", S);
                 ~~~~~^~~~~~~~~
parentrises.cpp: In function 'int main()':
parentrises.cpp:78:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d", &Sub);
         ~~~~~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...