Submission #891183
Source Code Expand
import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.math.BigInteger; import java.util.NoSuchElementException; public class Main { private static void solve() { int n = nei(); int[] a = new int[n]; for (int i = 0; i < n; i++) { a[i] = nei() - 1; } int c = 0; for (int i = 0; i < n; i++) { if (a[a[i]] == i) c++; } c >>= 1; out(c); } static BigInteger combination(int a, int b, BigInteger mod) { BigInteger q = BigInteger.ONE; BigInteger p = BigInteger.ONE; for (int i = a - b + 1; i <= a; i++) { q = q.multiply(BigInteger.valueOf(i)).mod(mod); } for (int j = 1; j <= b; j++) { p = p.multiply(BigInteger.valueOf(j)).mod(mod); } return q.multiply(p.modInverse(mod)).mod(mod); } static int abs(int x) { return x < 0 ? -x : x; } static int gcd(int x, int y) { if (x < y) { x ^= y; y ^= x; x ^= y; } int z = x % y; if (z == 0) return y; return gcd(y, z); } static int clamp(int a, int min, int max) { return a < min ? min : a > max ? max : a; } static int max(int a, int b) { return a > b ? a : b; } static int min(int a, int b) { return a < b ? a : b; } static long max(long a, long b) { return a > b ? a : b; } static long min(long a, long b) { return a < b ? a : b; } static void out(String val) { IO.out(val); } static void out(int val) { IO.out(String.valueOf(val)); } static void out(long val) { IO.out(String.valueOf(val)); } static void out(char val) { IO.out(String.valueOf(val)); } static void out(float val) { IO.out(String.valueOf(val)); } static void out(double val) { IO.out(String.valueOf(val)); } static void out(boolean val) { IO.out(String.valueOf(val)); } static String next() { return IO.next(); } static int nei() { return IO.nextInt(); } static long nel() { return IO.nextLong(); } static int parseInt(String val) { return Integer.parseInt(val); } static int parseInt(char val) { return Integer.parseInt(String.valueOf(val)); } static long parseLong(String val) { return Long.parseLong(val); } public static void main(String[] args) { solve(); IO.flush(); } } final class UnionFind { int[] data; UnionFind(int n) { data = new int[n]; for (int i = 0; i < n; i++) { data[i] = -1; } } boolean union(int x, int y) { x = root(x); y = root(y); if (x == y) return false; if (data[y] < data[x]) { x ^= y; y ^= x; x ^= y; } data[x] += data[y]; data[y] = x; return true; } boolean find(int x, int y) { return root(x) == root(y); } int root(int x) { return data[x] < 0 ? x : (data[x] = root(data[x])); } int size(int x) { return -data[root(x)]; } } final class IO { private static final InputStream in = System.in; private static final PrintWriter out = new PrintWriter(System.out, false); private static final byte[] buffer = new byte[1024]; private static int ptr = 0; private static int len = 0; private static boolean hasNextByte() { if (ptr < len) return true; ptr = 0; try { len = in.read(buffer); } catch (IOException e) { e.printStackTrace(); } return len > 0; } private static int readByte() { if (hasNextByte()) return buffer[ptr++]; else return -1; } static boolean hasNext() { byte c; while (hasNextByte() && ((c = buffer[ptr]) < '!' || c > '~')) ptr++; return hasNextByte(); } static String next() { if (!hasNext()) throw new NoSuchElementException(); StringBuilder sb = new StringBuilder(); int b = readByte(); while (b >= '!' && b <= '~') { sb.append((char) b); b = readByte(); } return sb.toString(); } static long nextLong() { if (!hasNext()) throw new NoSuchElementException(); long n = 0; int sign = 1; int b = readByte(); if (b == '-') { sign = -1; b = readByte(); } if (b < '0' || '9' < b) throw new NumberFormatException(); while (true) { if ('0' <= b && b <= '9') n = n * 10 + b - '0'; else if (b == -1 || b < '!' || b > '~') return n * sign; else throw new NumberFormatException(); b = readByte(); } } static int nextInt() { if (!hasNext()) throw new NoSuchElementException(); int n = 0; int sign = 1; int b = readByte(); if (b == '-') { sign = -1; b = readByte(); } if (b < '0' || '9' < b) throw new NumberFormatException(); while (true) { if ('0' <= b && b <= '9') n = n * 10 + b - '0'; else if (b == -1 || b < '!' || b > '~') return n * sign; else throw new NumberFormatException(); b = readByte(); } } static void out(String val) { out.println(val); } static void flush() { out.flush(); } }
Submission Info
Submission Time | |
---|---|
Task | B - Friendly Rabbits |
User | saharan |
Language | Java8 (OpenJDK 1.8.0) |
Score | 200 |
Code Size | 4975 Byte |
Status | AC |
Exec Time | 137 ms |
Memory | 9556 KB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 200 / 200 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | 0_00.txt, 0_01.txt, 0_02.txt |
All | 0_00.txt, 0_01.txt, 0_02.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
0_00.txt | AC | 103 ms | 8016 KB |
0_01.txt | AC | 104 ms | 8144 KB |
0_02.txt | AC | 102 ms | 8016 KB |
1_00.txt | AC | 99 ms | 8148 KB |
1_01.txt | AC | 134 ms | 9552 KB |
1_02.txt | AC | 125 ms | 9552 KB |
1_03.txt | AC | 137 ms | 9552 KB |
1_04.txt | AC | 125 ms | 9552 KB |
1_05.txt | AC | 119 ms | 9300 KB |
1_06.txt | AC | 132 ms | 9556 KB |
1_07.txt | AC | 135 ms | 9552 KB |
1_08.txt | AC | 113 ms | 9044 KB |
1_09.txt | AC | 132 ms | 9428 KB |
1_10.txt | AC | 127 ms | 9172 KB |
1_11.txt | AC | 121 ms | 8916 KB |