結果
問題 | No.742 にゃんにゃんにゃん 猫の挨拶 |
ユーザー |
![]() |
提出日時 | 2018-10-06 18:25:23 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 142 ms / 2,500 ms |
コード長 | 3,538 bytes |
コンパイル時間 | 2,325 ms |
コンパイル使用メモリ | 78,132 KB |
実行使用メモリ | 42,928 KB |
最終ジャッジ日時 | 2024-10-12 14:04:44 |
合計ジャッジ時間 | 4,048 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 16 |
ソースコード
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.InputMismatchException;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[] a = in.nextIntArrayDec(n);int ans = 0;BIT bit = new BIT(n);for (int i = 0; i < n; i++) {ans += i - bit.query(a[i]);bit.add(a[i], 1);}out.println(ans);}}/*** 0-indexed BinaryIndexTree* */static class BIT {private int n;private long[] bit;public BIT(int n) {this.n = n;bit = new long[n + 1];}public void clear() {Arrays.fill(bit, 0);}public void add(int i, long x) {while (i <= n) {bit[i] += x;i |= i + 1;}}public long query(int l, int r) {return l <= r ? query(r) - query(l - 1) : 0;}private long query(int i) {long s = 0;while (i >= 0) {s += bit[i];i = (i & (i + 1)) - 1;}return s;}}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 int[] nextIntArray1Index(int n) {int[] res = new int[n + 1];for (int i = 0; i < n; i++) {res[i + 1] = nextInt();}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 long[] nextLongArray1Index(int n) {long[] res = new long[n + 1];for (int i = 0; i < n; i++) {res[i + 1] = nextLong();}return res;}public double[] nextDoubleArray(int n) {double[] res = new double[n];for (int i = 0; i < n; i++) {res[i] = nextDouble();}return res;}public InputReader(InputStream inputStream) {in = new BufferedReader(new InputStreamReader(inputStream));tok = new StringTokenizer("");}}}