Submission #890875
Source Code Expand
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long ull; typedef long double ld; const ld PI = acos(-1.0); const ll LINF = (ll)1e18 + 5; const int INF = (int)1e9 + 5; template<class T> T sqr(T x) { return x * x; } template<class T> T abs(T x) { return x < 0 ? -x : x; } template<class T> ll round(T x) { return x < 0 ? x - 0.5 : x + 0.5; } template<class T> bool chmin(T & x, const T & y) { if (y < x) { x = y; return true; } return false; } template<class T> bool chmax(T & x, const T & y) { if (x < y) { x = y; return true; } return false; } template<class P, class Q> ostream & operator <<(ostream & os, const pair<P, Q> & p) { return os << "(" << p.first << ", " << p.second << ")"; } template<class T> ostream & operator <<(ostream & os, const vector<T> & v) { bool was = false; os << "{"; for (typename vector<T>::const_iterator it = v.begin(); it != v.end(); it++) { if (was) { os << ", "; } else { was = true; } os << *it; } os << "}"; return os; } template<class T> ostream & operator <<(ostream & os, const set<T> & v) { bool was = false; os << "{"; for (typename set<T>::const_iterator it = v.begin(); it != v.end(); it++) { if (was) { os << ", "; } else { was = true; } os << *it; } os << "}"; return os; } template<class T> ostream & operator <<(ostream & os, const multiset<T> & v) { bool was = false; os << "{"; for (typename multiset<T>::const_iterator it = v.begin(); it != v.end(); it++) { if (was) { os << ", "; } else { was = true; } os << *it; } os << "}"; return os; } template<class P, class Q> ostream & operator <<(ostream & os, const map<P, Q> & v) { bool was = false; os << "{"; for (typename map<P, Q>::const_iterator it = v.begin(); it != v.end(); it++) { if (was) { os << ", "; } else { was = true; } os << *it; } os << "}"; return os; } #define all(x) (x).begin(), (x).end() template<class T> T nextInt() { ll x = 0; bool p = false; char c; do { c = getchar(); } while (c <= 32); if (c == '-') { p = true; c = getchar(); } while (c >= '0' && c <= '9') { x = x * 10 + c - '0'; c = getchar(); } return (p ? -x : x); } int main() { srand(time(0)); #ifdef LOCAL //gen(); freopen("input.txt", "r", stdin); #else #endif int n; cin >> n; vector<int> a(n); for (int & x : a) { cin >> x; x--; } int res = 0; for (int i = 0; i < n; i++) { if (a[i] > i && a[a[i]] == i) res++; } cout << res << endl; }
Submission Info
Submission Time | |
---|---|
Task | B - Friendly Rabbits |
User | netman |
Language | C++14 (GCC 5.4.1) |
Score | 200 |
Code Size | 2690 Byte |
Status | AC |
Exec Time | 34 ms |
Memory | 640 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 | 2 ms | 256 KB |
0_01.txt | AC | 2 ms | 256 KB |
0_02.txt | AC | 2 ms | 256 KB |
1_00.txt | AC | 3 ms | 256 KB |
1_01.txt | AC | 30 ms | 640 KB |
1_02.txt | AC | 30 ms | 640 KB |
1_03.txt | AC | 30 ms | 640 KB |
1_04.txt | AC | 30 ms | 640 KB |
1_05.txt | AC | 34 ms | 640 KB |
1_06.txt | AC | 30 ms | 640 KB |
1_07.txt | AC | 30 ms | 640 KB |
1_08.txt | AC | 13 ms | 384 KB |
1_09.txt | AC | 25 ms | 512 KB |
1_10.txt | AC | 22 ms | 512 KB |
1_11.txt | AC | 7 ms | 256 KB |