RCO presents 日本橋ハーフマラソン 本戦

Submission #1174095

Source codeソースコード

import java.util.Arrays;
import java.util.Scanner;
import java.util.stream.Stream;

public class Main {
    public static void main(String[] args) {
        new Main().solve();
    }

    private static final int[] dx = {1, 0, -1, 0};
    private static final int[] dy = {0, 1, 0, -1};
    private XorShift random = new XorShift();
    int n = 8;

    void solve() {
        try (Scanner in = new Scanner(System.in)) {
            for (int turn = 0; turn < 1000; ++turn) {
                int d = in.nextInt();
                int t = in.nextInt();
                Tank[] tanks = new Tank[n];
                for (int i = 0; i < n; ++i) {
                    tanks[i] = new Tank();
                    tanks[i].i = i + 1;
                    tanks[i].c = in.nextInt();
                }
                for (int i = 0; i < n; ++i) {
                    tanks[i].a = in.nextInt();
                }
                solve(d, t, tanks);
            }
        }
    }

    class Tank {
        int c, a, i;
    }

    void solve(int D, int T, Tank[] tanks) {
        int sum = Stream.of(tanks).mapToInt(x -> x.c).sum();
        if (sum < 50) {
            Arrays.sort(tanks, (a, b) -> a.c - b.c);
            System.out.println("change " + tanks[0].i);
            return;
        }
        for (Tank t : tanks) {
            if (t.c != t.a) {
                System.out.println("fill " + t.i);
                return;
            }
        }
        if (D < 35) {
            System.out.println("pass");
            return;
        }
        Arrays.sort(tanks, (a, b) -> b.c - a.c);
        for (int b = 1; b < (1 << n); ++b) {
            int count = Integer.bitCount(b);
            int s = 0;
            for (int i = 0; i < n; ++i) {
                if ((b & (1 << i)) != 0) {
                    s += tanks[i].c;
                }
            }
            if (s == D) {
                StringBuilder sb = new StringBuilder();
                sb.append("sell ").append(count);
                for (int i = 0; i < n; ++i) {
                    if ((b & (1 << i)) != 0) {
                        sb.append(" " + tanks[i].i);
                    }
                }
                System.out.println(sb);
                return;
            }
        }
        System.out.println("pass");
    }


    private final class XorShift {
        int x = 123456789;
        int y = 362436069;
        int z = 521288629;
        int w = 88675123;

        int nextInt(int n) {
            final int t = x ^ (x << 11);
            x = y;
            y = z;
            z = w;
            w = (w ^ (w >>> 19)) ^ (t ^ (t >>> 8));
            final int r = w % n;
            return r < 0 ? r + n : r;
        }

        int nextInt() {
            final int t = x ^ (x << 11);
            x = y;
            y = z;
            z = w;
            return w = (w ^ (w >>> 19)) ^ (t ^ (t >>> 8));
        }

        long nextLong() {
            return ((long) nextInt() << 32) | (long) nextInt();
        }
    }

    private void tr(Object... o) {
        System.err.println(Arrays.deepToString(o));
    }
}

Submission

Task問題 A - 石油王Xの憂鬱
User nameユーザ名 hoshi524
Created time投稿日時
Language言語 Java8 (OpenJDK 1.8.0)
Status状態 AC
Score得点 6729332
Source lengthソースコード長 3207 Byte
File nameファイル名
Exec time実行時間 473 ms
Memory usageメモリ使用量 44852 KB

Test case

Set

Set name Score得点 / Max score Cases
test_01 130245 / 417500 subtask_01_01.txt
test_02 133701 / 417500 subtask_01_02.txt
test_03 140408 / 417500 subtask_01_03.txt
test_04 130176 / 417500 subtask_01_04.txt
test_05 133932 / 417500 subtask_01_05.txt
test_06 145119 / 417500 subtask_01_06.txt
test_07 151906 / 417500 subtask_01_07.txt
test_08 136555 / 417500 subtask_01_08.txt
test_09 137565 / 417500 subtask_01_09.txt
test_10 145797 / 417500 subtask_01_10.txt
test_11 135028 / 417500 subtask_01_11.txt
test_12 128716 / 417500 subtask_01_12.txt
test_13 141032 / 417500 subtask_01_13.txt
test_14 140170 / 417500 subtask_01_14.txt
test_15 121039 / 417500 subtask_01_15.txt
test_16 138166 / 417500 subtask_01_16.txt
test_17 132885 / 417500 subtask_01_17.txt
test_18 135094 / 417500 subtask_01_18.txt
test_19 148922 / 417500 subtask_01_19.txt
test_20 130097 / 417500 subtask_01_20.txt
test_21 130667 / 417500 subtask_01_21.txt
test_22 126034 / 417500 subtask_01_22.txt
test_23 125712 / 417500 subtask_01_23.txt
test_24 129088 / 417500 subtask_01_24.txt
test_25 129302 / 417500 subtask_01_25.txt
test_26 127591 / 417500 subtask_01_26.txt
test_27 133443 / 417500 subtask_01_27.txt
test_28 134548 / 417500 subtask_01_28.txt
test_29 134861 / 417500 subtask_01_29.txt
test_30 143858 / 417500 subtask_01_30.txt
test_31 142054 / 417500 subtask_01_31.txt
test_32 129382 / 417500 subtask_01_32.txt
test_33 128349 / 417500 subtask_01_33.txt
test_34 142076 / 417500 subtask_01_34.txt
test_35 129658 / 417500 subtask_01_35.txt
test_36 143228 / 417500 subtask_01_36.txt
test_37 144900 / 417500 subtask_01_37.txt
test_38 129287 / 417500 subtask_01_38.txt
test_39 119031 / 417500 subtask_01_39.txt
test_40 132362 / 417500 subtask_01_40.txt
test_41 138585 / 417500 subtask_01_41.txt
test_42 131056 / 417500 subtask_01_42.txt
test_43 136261 / 417500 subtask_01_43.txt
test_44 138034 / 417500 subtask_01_44.txt
test_45 124747 / 417500 subtask_01_45.txt
test_46 140266 / 417500 subtask_01_46.txt
test_47 135772 / 417500 subtask_01_47.txt
test_48 126086 / 417500 subtask_01_48.txt
test_49 127798 / 417500 subtask_01_49.txt
test_50 138743 / 417500 subtask_01_50.txt

Test case

Case name Status状態 Exec time実行時間 Memory usageメモリ使用量
subtask_01_01.txt AC 473 ms 44788 KB
subtask_01_02.txt AC 384 ms 42788 KB
subtask_01_03.txt AC 400 ms 40604 KB
subtask_01_04.txt AC 369 ms 42760 KB
subtask_01_05.txt AC 387 ms 41180 KB
subtask_01_06.txt AC 401 ms 39660 KB
subtask_01_07.txt AC 404 ms 41900 KB
subtask_01_08.txt AC 379 ms 42472 KB
subtask_01_09.txt AC 400 ms 41476 KB
subtask_01_10.txt AC 401 ms 41764 KB
subtask_01_11.txt AC 379 ms 43004 KB
subtask_01_12.txt AC 384 ms 40692 KB
subtask_01_13.txt AC 408 ms 38928 KB
subtask_01_14.txt AC 362 ms 42388 KB
subtask_01_15.txt AC 381 ms 44852 KB
subtask_01_16.txt AC 408 ms 40512 KB
subtask_01_17.txt AC 401 ms 40676 KB
subtask_01_18.txt AC 386 ms 42776 KB
subtask_01_19.txt AC 399 ms 40844 KB
subtask_01_20.txt AC 361 ms 42972 KB
subtask_01_21.txt AC 387 ms 40248 KB
subtask_01_22.txt AC 399 ms 41052 KB
subtask_01_23.txt AC 429 ms 40424 KB
subtask_01_24.txt AC 374 ms 42652 KB
subtask_01_25.txt AC 384 ms 41728 KB
subtask_01_26.txt AC 362 ms 40004 KB
subtask_01_27.txt AC 425 ms 38856 KB
subtask_01_28.txt AC 384 ms 40476 KB
subtask_01_29.txt AC 372 ms 40816 KB
subtask_01_30.txt AC 405 ms 38884 KB
subtask_01_31.txt AC 370 ms 42732 KB
subtask_01_32.txt AC 390 ms 40104 KB
subtask_01_33.txt AC 381 ms 40908 KB
subtask_01_34.txt AC 369 ms 42284 KB
subtask_01_35.txt AC 407 ms 41620 KB
subtask_01_36.txt AC 403 ms 40100 KB
subtask_01_37.txt AC 391 ms 41488 KB
subtask_01_38.txt AC 379 ms 43140 KB
subtask_01_39.txt AC 375 ms 43172 KB
subtask_01_40.txt AC 398 ms 42268 KB
subtask_01_41.txt AC 377 ms 39300 KB
subtask_01_42.txt AC 397 ms 38788 KB
subtask_01_43.txt AC 406 ms 40992 KB
subtask_01_44.txt AC 394 ms 39612 KB
subtask_01_45.txt AC 406 ms 40420 KB
subtask_01_46.txt AC 386 ms 39172 KB
subtask_01_47.txt AC 391 ms 41104 KB
subtask_01_48.txt AC 411 ms 40780 KB
subtask_01_49.txt AC 418 ms 40548 KB
subtask_01_50.txt AC 379 ms 39932 KB