Submission #845411


Source Code Expand

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.InputMismatchException;
import java.util.LinkedList;
import java.util.Queue;


class ArrayUtil {
	static int[] unique(int[] sorted) {
		int ptr = 1, cur = 0;
		int[] buffer = new int[sorted.length];
		buffer[0] = sorted[0];
		while (++cur < sorted.length) {
			if (sorted[cur] != sorted[cur - 1]) {
				buffer[ptr++] = sorted[cur];
			}
		}
		return Arrays.copyOf(buffer, ptr);
	}

	static void compress(int[] a) {
		int n = a.length;
		int[] sorted = Arrays.copyOf(a, n);
		Arrays.sort(sorted);
		int[] unique = ArrayUtil.unique(sorted);
		for (int i = 0; i < n; i++) {
			a[i] = Arrays.binarySearch(unique, a[i]);
			assert a[i] >= 0;
		}
	}
}

public class Main {
	InputStream is;

	int __t__ = 1;
	int __f__ = 0;
	int __FILE_DEBUG_FLAG__ = __f__;
	String __DEBUG_FILE_NAME__ = "src/E2";

	FastScanner in;
	PrintWriter out;
	public void solve() {		
		int n = in.nextInt();
		int[] a = in.nextIntArray(n);
		
		ArrayUtil.compress(a);
		
		int cnt = 0;
		for (int i = 0; i < n; i++) {
			if (i % 2 == 0 && a[i] % 2 != 0) cnt++;
			if (i % 2 != 0 && a[i] % 2 == 0) cnt++;
		}
		System.out.println(cnt / 2);
	}

	public void run() {
		if (__FILE_DEBUG_FLAG__ == __t__) {
			try {
				is = new FileInputStream(__DEBUG_FILE_NAME__);
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			}
			System.out.println("FILE_INPUT!");
		} else {
			is = System.in;
		}
		in = new FastScanner(is);
		out = new PrintWriter(System.out);

		Thread t = new Thread(null, new Runnable() {
			
			@Override
			public void run() {
				solve();
			}
		}, "lul", 1 << 27);
		t.start();
	}

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

	public void mapDebug(int[][] a) {
		System.out.println("--------map display---------");

		for (int i = 0; i < a.length; i++) {
			for (int j = 0; j < a[i].length; j++) {
				System.out.printf("%3d ", a[i][j]);
			}
			System.out.println();
		}

		System.out.println("----------------------------");
		System.out.println();
	}

	public void debug(Object... obj) {
		System.out.println(Arrays.deepToString(obj));
	}

	class FastScanner {
		private InputStream stream;
		private byte[] buf = new byte[1024];
		private int curChar;
		private int numChars;

		public FastScanner(InputStream stream) {
			this.stream = stream;
			//stream = new FileInputStream(new File("dec.in"));

		}

		int read() {
			if (numChars == -1)
				throw new InputMismatchException();
			if (curChar >= numChars) {
				curChar = 0;
				try {
					numChars = stream.read(buf);
				} catch (IOException e) {
					throw new InputMismatchException();
				}
				if (numChars <= 0)
					return -1;
			}
			return buf[curChar++];
		}

		boolean isSpaceChar(int c) {
			return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
		}

		boolean isEndline(int c) {
			return c == '\n' || c == '\r' || c == -1;
		}

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

		int[] nextIntArray(int n) {
			int[] array = new int[n];
			for (int i = 0; i < n; i++)
				array[i] = nextInt();

			return array;
		}

		int[][] nextIntMap(int n, int m) {
			int[][] map = new int[n][m];
			for (int i = 0; i < n; i++) {
				map[i] = in.nextIntArray(m);
			}
			return map;
		}

		long nextLong() {
			return Long.parseLong(next());
		}

		long[] nextLongArray(int n) {
			long[] array = new long[n];
			for (int i = 0; i < n; i++)
				array[i] = nextLong();

			return array;
		}

		long[][] nextLongMap(int n, int m) {
			long[][] map = new long[n][m];
			for (int i = 0; i < n; i++) {
				map[i] = in.nextLongArray(m);
			}
			return map;
		}

		double nextDouble() {
			return Double.parseDouble(next());
		}

		double[] nextDoubleArray(int n) {
			double[] array = new double[n];
			for (int i = 0; i < n; i++)
				array[i] = nextDouble();

			return array;
		}

		double[][] nextDoubleMap(int n, int m) {
			double[][] map = new double[n][m];
			for (int i = 0; i < n; i++) {
				map[i] = in.nextDoubleArray(m);
			}
			return map;
		}

		String next() {
			int c = read();
			while (isSpaceChar(c))
				c = read();
			StringBuilder res = new StringBuilder();
			do {
				res.appendCodePoint(c);
				c = read();
			} while (!isSpaceChar(c));
			return res.toString();
		}

		String[] nextStringArray(int n) {
			String[] array = new String[n];
			for (int i = 0; i < n; i++)
				array[i] = next();

			return array;
		}

		String nextLine() {
			int c = read();
			while (isEndline(c))
				c = read();
			StringBuilder res = new StringBuilder();
			do {
				res.appendCodePoint(c);
				c = read();
			} while (!isEndline(c));
			return res.toString();
		}
	}
}


Submission Info

Submission Time
Task C - BBuBBBlesort!
User hiro116s
Language Java8 (OpenJDK 1.8.0)
Score 600
Code Size 5049 Byte
Status AC
Exec Time 363 ms
Memory 20144 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 2
AC × 24
Set Name Test Cases
Sample s1.txt, s2.txt
All 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, s1.txt, s2.txt
Case Name Status Exec Time Memory
01.txt AC 303 ms 19748 KB
02.txt AC 339 ms 19928 KB
03.txt AC 303 ms 18824 KB
04.txt AC 299 ms 18020 KB
05.txt AC 363 ms 19876 KB
06.txt AC 351 ms 19920 KB
07.txt AC 335 ms 19856 KB
08.txt AC 262 ms 17996 KB
09.txt AC 286 ms 18124 KB
10.txt AC 291 ms 19196 KB
11.txt AC 263 ms 17972 KB
12.txt AC 271 ms 18264 KB
13.txt AC 279 ms 18592 KB
14.txt AC 302 ms 18400 KB
15.txt AC 307 ms 18612 KB
16.txt AC 287 ms 18484 KB
17.txt AC 319 ms 20144 KB
18.txt AC 163 ms 8144 KB
19.txt AC 162 ms 8176 KB
20.txt AC 159 ms 8144 KB
21.txt AC 159 ms 8172 KB
22.txt AC 159 ms 8176 KB
s1.txt AC 159 ms 8172 KB
s2.txt AC 162 ms 8176 KB