Submission #3105011


Source Code Expand

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.HashMap;
import java.util.InputMismatchException;
import java.util.Map;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws IOException {
		InputStream inputStream = System.in;
		OutputStream outputStream = System.out;
		InputReader in = new InputReader(inputStream);
		PrintWriter out = new PrintWriter(outputStream);
		TaskX solver = new TaskX();
		solver.solve(1, in, out);
		out.close();
	}

	static int INF = 1 << 30;
	static long LINF = 1L << 55;
	static int MOD = 1000000007;
	static int[] mh4 = { 0, -1, 1, 0 };
	static int[] mw4 = { -1, 0, 0, 1 };
	static int[] mh8 = { -1, -1, -1, 0, 0, 1, 1, 1 };
	static int[] mw8 = { -1, 0, 1, -1, 1, -1, 0, 1 };

	static class TaskX {

		public void solve(int testNumber, InputReader in, PrintWriter out) {

			int n = in.nextInt();
			int[] h = new int[n];
			int[] hs = new int[n];
			int[] ht = new int[n];
			Map<Integer, Integer> map = new HashMap<>();
			for (int i = n-1; i >= 0; i--) {
				h[i] = in.nextInt();
				hs[i] = h[i];
				map.merge(h[i], 1, Integer::sum);
			}

			for (int v : map.values()) {
				if (v >= 2) {
					out.println(-1);
					return;
				}
			}

			Arrays.sort(hs);

			map = new HashMap<>();
			for (int i = 0; i < n; i++) {
				map.put(hs[i], i+1);
			}

			for (int i = 0; i < n; i++) {
				ht[i] = map.get(h[i]);
			}

			BIT bit = new BIT(n);
			long ans = 0;
			for (int i = 0; i < n; i++) {
				ans += bit.sum(ht[i]);
				bit.add(ht[i], h[i]);
			}

			out.println(ans);

		}

	}

	/**
	 * 1-indexed BinaryIndexTree
	 * */
	public static class BIT {

		// [1, n]
		int n;
		long[] bit;

		public BIT(int n) {
			this.n = n;
			bit = new long[n + 1];
		}

		// indexに値vを足す
		public void add(int i, int v) {
			for (int x = i; x < n + 1; x += x & -x) {
				bit[x] += v;
			}
		}

		// 区間和 [1, v] を求める
		// v[1] + ... + v[i]
		public long sum(int i) {
			long ret = 0;
			for (int x = i; x > 0; x -= x & -x) {
				ret += bit[x];
			}
			return ret;
		}

		// 区間和 [i, j] = [1, j] - [1, i-1]を求める
		// v[i] + ... + v[j]
		public long query(int i, int j) {
			return sum(j) - sum(i - 1);
		}
	}

	static class InputReader {
		BufferedReader in;
		StringTokenizer tok;

		public String nextString() {
			while (!tok.hasMoreTokens()) {
				try {
					tok = new StringTokenizer(in.readLine(), " ");
				} catch (IOException e) {
					throw new InputMismatchException();
				}
			}
			return tok.nextToken();
		}

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

		public long nextLong() {
			return Long.parseLong(nextString());
		}

		public double nextDouble() {
			return Double.parseDouble(nextString());
		}

		public int[] nextIntArray(int n) {
			int[] res = new int[n];
			for (int i = 0; i < n; i++) {
				res[i] = nextInt();
			}
			return res;
		}

		public int[] nextIntArrayDec(int n) {
			int[] res = new int[n];
			for (int i = 0; i < n; i++) {
				res[i] = nextInt() - 1;
			}
			return res;
		}

		public long[] nextLongArray(int n) {
			long[] res = new long[n];
			for (int i = 0; i < n; i++) {
				res[i] = nextLong();
			}
			return res;
		}

		public long[] nextLongArrayDec(int n) {
			long[] res = new long[n];
			for (int i = 0; i < n; i++) {
				res[i] = nextLong() - 1;
			}
			return res;
		}

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

Submission Info

Submission Time
Task E - Line up!
User tutuz
Language Java8 (OpenJDK 1.8.0)
Score 100
Code Size 3866 Byte
Status AC
Exec Time 448 ms
Memory 58140 KB

Judge Result

Set Name Sample Subtask1 All
Score / Max Score 0 / 0 30 / 30 70 / 70
Status
AC × 2
AC × 25
AC × 45
Set Name Test Cases
Sample subtask0_sample_01.txt, subtask0_sample_02.txt
Subtask1 subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask0_sample_01.txt, subtask0_sample_02.txt
All subtask0_sample_01.txt, subtask0_sample_02.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_11.txt, subtask2_12.txt, subtask2_13.txt, subtask2_14.txt, subtask2_15.txt, subtask2_16.txt, subtask2_17.txt, subtask2_18.txt, subtask2_19.txt, subtask2_20.txt
Case Name Status Exec Time Memory
subtask0_sample_01.txt AC 157 ms 25552 KB
subtask0_sample_02.txt AC 153 ms 23756 KB
subtask1_01.txt AC 181 ms 25940 KB
subtask1_02.txt AC 177 ms 25812 KB
subtask1_03.txt AC 177 ms 25684 KB
subtask1_04.txt AC 164 ms 24528 KB
subtask1_05.txt AC 152 ms 24148 KB
subtask1_06.txt AC 148 ms 27732 KB
subtask1_07.txt AC 146 ms 23376 KB
subtask1_08.txt AC 161 ms 24532 KB
subtask1_09.txt AC 176 ms 26324 KB
subtask1_10.txt AC 177 ms 24404 KB
subtask1_11.txt AC 168 ms 25424 KB
subtask1_12.txt AC 165 ms 25812 KB
subtask1_13.txt AC 173 ms 25684 KB
subtask1_14.txt AC 168 ms 26068 KB
subtask1_15.txt AC 180 ms 25684 KB
subtask1_16.txt AC 176 ms 23764 KB
subtask1_17.txt AC 160 ms 23508 KB
subtask1_18.txt AC 166 ms 25812 KB
subtask1_19.txt AC 172 ms 26836 KB
subtask1_20.txt AC 182 ms 23124 KB
subtask1_21.txt AC 173 ms 23892 KB
subtask1_22.txt AC 175 ms 26580 KB
subtask1_23.txt AC 170 ms 24148 KB
subtask2_01.txt AC 297 ms 44884 KB
subtask2_02.txt AC 368 ms 54544 KB
subtask2_03.txt AC 344 ms 53432 KB
subtask2_04.txt AC 238 ms 33312 KB
subtask2_05.txt AC 312 ms 45108 KB
subtask2_06.txt AC 296 ms 46452 KB
subtask2_07.txt AC 294 ms 46740 KB
subtask2_08.txt AC 276 ms 45780 KB
subtask2_09.txt AC 290 ms 44500 KB
subtask2_10.txt AC 281 ms 45968 KB
subtask2_11.txt AC 382 ms 54576 KB
subtask2_12.txt AC 389 ms 54252 KB
subtask2_13.txt AC 417 ms 56684 KB
subtask2_14.txt AC 420 ms 56236 KB
subtask2_15.txt AC 412 ms 54132 KB
subtask2_16.txt AC 448 ms 56336 KB
subtask2_17.txt AC 399 ms 52728 KB
subtask2_18.txt AC 384 ms 53752 KB
subtask2_19.txt AC 397 ms 54836 KB
subtask2_20.txt AC 422 ms 58140 KB