Submission #13089951


Source Code Expand

import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.PriorityQueue;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.AbstractCollection;
import java.util.StringTokenizer;
import java.io.Writer;
import java.io.OutputStreamWriter;
import java.io.BufferedReader;
import java.util.Comparator;
import java.util.Collections;
import java.io.InputStream;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 */
public class Main {
    public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        InputReader in = new InputReader(inputStream);
        OutputWriter out = new OutputWriter(outputStream);
        TaskF solver = new TaskF();
        solver.solve(1, in, out);
        out.close();
    }

    static class TaskF {
        public void solve(int testNumber, InputReader in, OutputWriter out) {
            int N = in.nextInt();
            int required[] = new int[N];
            int total[] = new int[N];
            int sum = 0;
            for (int i = 0; i < N; i++) {
                String s = in.next();
                int M = s.length();
                int current = 0;
                for (int j = 0; j < M; j++) {
                    if (s.charAt(j) == '(') {
                        current++;
                    } else {
                        current--;
                        if (current < 0) {
                            required[i] = Math.max(required[i], Math.abs(current));
                        }
                    }
                }
                total[i] = current;
                sum += current;
            }
            if (sum != 0) {
                out.printLine("No");
                return;
            }
            Pair p[] = new Pair[N];
            for (int i = 0; i < N; i++) {
                p[i] = new Pair(required[i], total[i]);
            }
            Arrays.sort(p, new Comparator<Pair>() {

                public int compare(Pair o1, Pair o2) {
                    if (o1.req != o2.req) {
                        return o1.req - o2.req;
                    } else {
                        return o2.tot - o1.tot;
                    }
                }
            });
            sum = 0;
            int i = 0;
            PriorityQueue<Integer> queue = new PriorityQueue<>(Collections.reverseOrder());
            while (i < N) {
                while (i < N && p[i].req <= sum) {
                    queue.add(p[i].tot);
                    i++;
                }
                if (queue.isEmpty()) {
                    out.printLine("No");
                    return;
                }
                sum += queue.poll();
            }
            out.printLine("Yes");
        }

        class Pair {
            int req;
            int tot;

            public Pair(int req, int tot) {
                this.req = req;
                this.tot = tot;
            }

        }

    }

    static class InputReader {
        BufferedReader in;
        StringTokenizer tokenizer = null;

        public InputReader(InputStream inputStream) {
            in = new BufferedReader(new InputStreamReader(inputStream));
        }

        public String next() {
            try {
                while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                    tokenizer = new StringTokenizer(in.readLine());
                }
                return tokenizer.nextToken();
            } catch (IOException e) {
                return null;
            }
        }

        public int nextInt() {
            return Integer.parseInt(next());
        }

    }

    static class OutputWriter {
        PrintWriter writer;

        public OutputWriter(OutputStream outputStream) {
            writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(outputStream)));
        }

        public OutputWriter(Writer writer) {
            this.writer = new PrintWriter(writer);
        }

        public void print(Object... objects) {
            for (int i = 0; i < objects.length; i++) {
                if (i != 0) {
                    writer.print(' ');
                }
                writer.print(objects[i]);
            }
        }

        public void printLine(Object... objects) {
            print(objects);
            writer.println();
        }

        public void close() {
            writer.close();
        }

    }
}

Submission Info

Submission Time
Task F - Bracket Sequencing
User phantom11
Language Java (OpenJDK 11.0.6)
Score 0
Code Size 4776 Byte
Status WA
Exec Time 623 ms
Memory 93404 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 600
Status
AC × 4
AC × 30
WA × 2
Set Name Test Cases
Sample sample_01, sample_02, sample_03, sample_04
All random_01, random_02, random_03, random_04, random_05, random_06, random_07, random_08, random_09, random_10, random_11, random_12, random_13, random_21, random_22, random_23, random_31, random_32, random_33, random_41, random_42, random_43, random_51, random_52, random_53, random_61, random_62, random_63, sample_01, sample_02, sample_03, sample_04
Case Name Status Exec Time Memory
random_01 AC 394 ms 61800 KiB
random_02 AC 607 ms 84784 KiB
random_03 AC 488 ms 64824 KiB
random_04 AC 623 ms 93404 KiB
random_05 AC 271 ms 60540 KiB
random_06 AC 254 ms 58252 KiB
random_07 AC 193 ms 44468 KiB
random_08 AC 186 ms 38340 KiB
random_09 AC 182 ms 36276 KiB
random_10 AC 219 ms 57828 KiB
random_11 AC 71 ms 32972 KiB
random_12 AC 68 ms 32760 KiB
random_13 AC 65 ms 32760 KiB
random_21 AC 64 ms 32764 KiB
random_22 AC 66 ms 32604 KiB
random_23 AC 70 ms 32792 KiB
random_31 AC 66 ms 32696 KiB
random_32 AC 73 ms 33076 KiB
random_33 AC 76 ms 33068 KiB
random_41 AC 66 ms 32572 KiB
random_42 AC 65 ms 32624 KiB
random_43 AC 69 ms 33116 KiB
random_51 WA 75 ms 33040 KiB
random_52 WA 68 ms 32668 KiB
random_53 AC 65 ms 32592 KiB
random_61 AC 285 ms 54080 KiB
random_62 AC 364 ms 63536 KiB
random_63 AC 409 ms 64324 KiB
sample_01 AC 66 ms 32656 KiB
sample_02 AC 62 ms 32692 KiB
sample_03 AC 64 ms 32800 KiB
sample_04 AC 62 ms 32416 KiB