Submission #33671435


Source Code Expand

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
using P = pair<int, int>;
using PL = pair<ll, ll>;

//#include "atcoder/all"
//using namespace atcoder;
//using mint = modint1000000007;
const int mod = 1000000007;
//using mint = modint998244353;
//const int mod = 998244353;
const int INF = 1e9+7;
//const long long LINF = 1e18;
const double EPS = 1e-9;

#define pb push_back
#define eb emplace_back
#define range(i, l, r) for(int i=(int)(l); i<(int)(r); i++)
#define rrange(i, l, r) for(int i=(int)(l); i>=(int)(r); i--)
#define all(v) (v).begin(),(v).end()
#define whole(f, x, ...) ([&](decltype((x)) container) { return (f)(begin(container), end(container), ## __VA_ARGS__); })(x)
#define debug(x) cerr < #x << ": " << x << '\n';

template <typename T> inline int in() { T x; cin >> x; return (x); }
template <typename T> inline void print(T& x) { cout << x << endl; }
template <typename T1, typename T2> ostream &operator<<(ostream &os, pair<T1, T2> p) { os << "(" << p.first << ", " << p.second << ")"; return os; }
template <typename T> istream &operator>>(istream &is, vector<T> &v) { for (T &in : v) is >> in; return is; }

template <typename T1, typename T2> inline bool chmax(T1 &a, T2 b) { return a < b && (a = b, true); }
template <typename T1, typename T2> inline bool chmin(T1 &a, T2 b) { return a > b && (a = b, true); }

int dx[4] = { -1, 0, 1, 0 };
int dy[4] = { 0, 1, 0, -1 };
const double pi = 3.141592653589793238;


int o = 0; // cout << o << endl; o++;

int main(){
    cin.tie(0);
	ios_base::sync_with_stdio(false);
    int n; cin >> n;
    vector<int> a(n+1); range(i, 1, n+1) cin >> a[i]; 
    ll ans = 0;
    ll cnt = 0;
    range(i, 1, n+1) {
        if(i==a[i]) {
            cnt++;
            continue;
        }
        int j = a[i];
        if(a[i]==j && a[j]==i) ans++;
    }
    //cout << ans << endl;
    ans /= 2;
    //cout << cnt << endl;
    ans += max((ll)cnt * (ll)(cnt-1) / 2, 0LL);
    cout << ans << endl;
}

Submission Info

Submission Time
Task C - Min Max Pair
User yoiyoi
Language C++ (GCC 9.2.1)
Score 300
Code Size 1969 Byte
Status AC
Exec Time 44 ms
Memory 5280 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 300 / 300
Status
AC × 2
AC × 12
Set Name Test Cases
Sample example_00.txt, example_01.txt
All example_00.txt, example_01.txt, test_00.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt
Case Name Status Exec Time Memory
example_00.txt AC 8 ms 3636 KiB
example_01.txt AC 2 ms 3640 KiB
test_00.txt AC 42 ms 4652 KiB
test_01.txt AC 14 ms 3560 KiB
test_02.txt AC 33 ms 4360 KiB
test_03.txt AC 32 ms 4464 KiB
test_04.txt AC 15 ms 3540 KiB
test_05.txt AC 35 ms 4068 KiB
test_06.txt AC 42 ms 5280 KiB
test_07.txt AC 44 ms 5228 KiB
test_08.txt AC 42 ms 5232 KiB
test_09.txt AC 3 ms 3488 KiB