Submission #604428

#TimeUsernameProblemLanguageResultExecution timeMemory
604428ZaniteMatch (CEOI16_match)C++17
0 / 100
0 ms212 KiB
#include <bits/stdc++.h>
using namespace std;

const int maxL  = 1e5 + 10;
const int Alph  = 26;

int L, freq[Alph], tfreq[Alph];
char S[maxL], ans[maxL];

void Exit() {
    printf("-1\n");
    exit(0);
}

int main() {
    scanf("%s", S);
    L = strlen(S);
    for (int i = 0; i < L; i++) {
        freq[S[i] - 'a']++;
    }

    for (int i = 0; i < Alph; i++) {
        if (freq[i] & 1) {Exit();}

        freq[i] >>= 1;
        tfreq[i] = freq[i];

        //cout << freq[i] << '\n';
    }

    vector<char> St;
    for (int i = 0; i < L; i++) {
        if (tfreq[S[i] - 'a']) {
            St.push_back(S[i]);
            tfreq[S[i] - 'a']--;
        } else {
            if (St.empty() || (St.back() != S[i])) {
                Exit();
            } else {
                St.pop_back();
            }
        }
    }
    if (!St.empty()) {Exit();}

    for (int i = 0; i < L; i++) {
        if (freq[S[i] - 'a']) {
            putchar('(');
            freq[S[i] - 'a']--;
        } else {
            putchar(')');
        } 
    }
    putchar('\n');
}

Compilation message (stderr)

match.cpp: In function 'int main()':
match.cpp:16:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   16 |     scanf("%s", S);
      |     ~~~~~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...