Submission #2133859


Source Code Expand

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayDeque;
import java.util.Arrays;
import java.util.NoSuchElementException;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) throws IOException {
		new Main().run();
	}

	void run() {
		FastScanner sc = new FastScanner();
		int n = (int) sc.nextLong();
		int m = (int) sc.nextLong();
		int k = (int) sc.nextLong();
		long[] a = new long[n];
		for (int i = 0; i < n; ++i) {
			a[i] = sc.nextLong();
		}

		ArrayDeque<long[]>[] dq = new ArrayDeque[k];
		int[] sz = new int[k];
		for (int i = 0; i < dq.length; ++i)
			dq[i] = new ArrayDeque();
		long ans = 0;
		for (int i = 0; i < n; ++i) {
			for (int j = k - 1; j >= 0; --j) {
				long add = a[i] * (j + 1);
				long base;
				if (j > 0) {
					if (dq[j - 1].isEmpty())
						continue;
					else
						base = dq[j - 1].peekLast()[0];
				} else {
					base = 0;
				}
				long v = add + base;
				if (j == k - 1)
					ans = Math.max(ans, v);
				int cnt = 0;
				while (!dq[j].isEmpty() && dq[j].peekFirst()[0] <= v) {
					long tmp = dq[j].pollFirst()[1];
					cnt += tmp;
					sz[j] -= tmp;
				}
				dq[j].addFirst(new long[] { v, cnt + 1 });
				sz[j] += cnt + 1;
				while (sz[j] > m) {
					if (dq[j].peekLast()[1] > sz[j] - m) {
						dq[j].peekLast()[1] -= sz[j] - m;
						sz[j] = m;
					} else {
						sz[j] -= dq[j].pollLast()[1];
					}
				}
			}
		}
		System.out.println(ans);
	}

	class FastScanner {
		private final InputStream in = System.in;
		private final byte[] buffer = new byte[1024];
		private int ptr = 0;
		private int buflen = 0;

		private boolean hasNextByte() {
			if (ptr < buflen) {
				return true;
			} else {
				ptr = 0;
				try {
					buflen = in.read(buffer);
				} catch (IOException e) {
					e.printStackTrace();
				}
				if (buflen <= 0) {
					return false;
				}
			}
			return true;
		}

		private int readByte() {
			if (hasNextByte())
				return buffer[ptr++];
			else
				return -1;
		}

		private boolean isPrintableChar(int c) {
			return 33 <= c && c <= 126;
		}

		private void skipUnprintable() {
			while (hasNextByte() && !isPrintableChar(buffer[ptr]))
				ptr++;
		}

		public boolean hasNext() {
			skipUnprintable();
			return hasNextByte();
		}

		public String next() {
			if (!hasNext())
				throw new NoSuchElementException();
			StringBuilder sb = new StringBuilder();
			int b = readByte();
			while (isPrintableChar(b)) {
				sb.appendCodePoint(b);
				b = readByte();
			}
			return sb.toString();
		}

		public long nextLong() {
			if (!hasNext())
				throw new NoSuchElementException();
			long n = 0;
			boolean minus = false;
			int b = readByte();
			if (b == '-') {
				minus = true;
				b = readByte();
			}
			if (b < '0' || '9' < b) {
				throw new NumberFormatException();
			}
			while (true) {
				if ('0' <= b && b <= '9') {
					n *= 10;
					n += b - '0';
				} else if (b == -1 || !isPrintableChar(b)) {
					return minus ? -n : n;
				} else {
					throw new NumberFormatException();
				}
				b = readByte();
			}
		}
	}

	void tr(Object... objects) {
		System.out.println(Arrays.deepToString(objects));
	}
}

Submission Info

Submission Time
Task A - Struck Out
User fortoobye
Language Java8 (OpenJDK 1.8.0)
Score 700
Code Size 3311 Byte
Status AC
Exec Time 1157 ms
Memory 271772 KB

Compile Error

Note: ./Main.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

Judge Result

Set Name Sample subtask1 subtask2 subtask3 All
Score / Max Score 0 / 0 100 / 100 200 / 200 300 / 300 100 / 100
Status
AC × 3
AC × 10
AC × 12
AC × 21
AC × 46
Set Name Test Cases
Sample sample_1.txt, sample_2.txt, sample_3.txt
subtask1 sample_2.txt, subtask_1_1.txt, subtask_1_2.txt, subtask_1_3.txt, subtask_1_4.txt, subtask_1_5.txt, subtask_1_6.txt, subtask_1_7.txt, subtask_1_8.txt, subtask_1_9.txt
subtask2 sample_1.txt, sample_2.txt, sample_3.txt, subtask_2_1.txt, subtask_2_2.txt, subtask_2_3.txt, subtask_2_4.txt, subtask_2_5.txt, subtask_2_6.txt, subtask_2_7.txt, subtask_2_8.txt, subtask_2_9.txt
subtask3 sample_1.txt, sample_2.txt, sample_3.txt, subtask_2_1.txt, subtask_2_2.txt, subtask_2_3.txt, subtask_2_4.txt, subtask_2_5.txt, subtask_2_6.txt, subtask_2_7.txt, subtask_2_8.txt, subtask_2_9.txt, subtask_3_1.txt, subtask_3_2.txt, subtask_3_3.txt, subtask_3_4.txt, subtask_3_5.txt, subtask_3_6.txt, subtask_3_7.txt, subtask_3_8.txt, subtask_3_9.txt
All sample_1.txt, sample_2.txt, sample_3.txt, sample_1.txt, sample_2.txt, sample_3.txt, subtask_1_1.txt, subtask_1_2.txt, subtask_1_3.txt, subtask_1_4.txt, subtask_1_5.txt, subtask_1_6.txt, subtask_1_7.txt, subtask_1_8.txt, subtask_1_9.txt, subtask_2_1.txt, subtask_2_2.txt, subtask_2_3.txt, subtask_2_4.txt, subtask_2_5.txt, subtask_2_6.txt, subtask_2_7.txt, subtask_2_8.txt, subtask_2_9.txt, subtask_3_1.txt, subtask_3_2.txt, subtask_3_3.txt, subtask_3_4.txt, subtask_3_5.txt, subtask_3_6.txt, subtask_3_7.txt, subtask_3_8.txt, subtask_3_9.txt, subtask_4_1.txt, subtask_4_10.txt, subtask_4_11.txt, subtask_4_12.txt, subtask_4_13.txt, subtask_4_2.txt, subtask_4_3.txt, subtask_4_4.txt, subtask_4_5.txt, subtask_4_6.txt, subtask_4_7.txt, subtask_4_8.txt, subtask_4_9.txt
Case Name Status Exec Time Memory
sample_1.txt AC 68 ms 18000 KB
sample_2.txt AC 68 ms 20692 KB
sample_3.txt AC 68 ms 20820 KB
subtask_1_1.txt AC 70 ms 17876 KB
subtask_1_2.txt AC 231 ms 59564 KB
subtask_1_3.txt AC 915 ms 271096 KB
subtask_1_4.txt AC 124 ms 24928 KB
subtask_1_5.txt AC 132 ms 41016 KB
subtask_1_6.txt AC 82 ms 19412 KB
subtask_1_7.txt AC 395 ms 124572 KB
subtask_1_8.txt AC 872 ms 269364 KB
subtask_1_9.txt AC 106 ms 22228 KB
subtask_2_1.txt AC 77 ms 19412 KB
subtask_2_2.txt AC 76 ms 20948 KB
subtask_2_3.txt AC 86 ms 19412 KB
subtask_2_4.txt AC 74 ms 21204 KB
subtask_2_5.txt AC 70 ms 21204 KB
subtask_2_6.txt AC 69 ms 17620 KB
subtask_2_7.txt AC 78 ms 18260 KB
subtask_2_8.txt AC 77 ms 21332 KB
subtask_2_9.txt AC 75 ms 21204 KB
subtask_3_1.txt AC 284 ms 60316 KB
subtask_3_2.txt AC 257 ms 59868 KB
subtask_3_3.txt AC 278 ms 59160 KB
subtask_3_4.txt AC 244 ms 44656 KB
subtask_3_5.txt AC 122 ms 26724 KB
subtask_3_6.txt AC 173 ms 43048 KB
subtask_3_7.txt AC 235 ms 59892 KB
subtask_3_8.txt AC 155 ms 28372 KB
subtask_3_9.txt AC 216 ms 59288 KB
subtask_4_1.txt AC 1052 ms 271660 KB
subtask_4_10.txt AC 966 ms 271580 KB
subtask_4_11.txt AC 950 ms 268156 KB
subtask_4_12.txt AC 1067 ms 271548 KB
subtask_4_13.txt AC 999 ms 270236 KB
subtask_4_2.txt AC 1157 ms 224808 KB
subtask_4_3.txt AC 957 ms 271628 KB
subtask_4_4.txt AC 1076 ms 271752 KB
subtask_4_5.txt AC 927 ms 269792 KB
subtask_4_6.txt AC 183 ms 58292 KB
subtask_4_7.txt AC 642 ms 151472 KB
subtask_4_8.txt AC 1057 ms 271772 KB
subtask_4_9.txt AC 549 ms 146652 KB