Submission #57763224


Source Code Expand

#include <bits/stdc++.h>

using i64 = long long;
using u64 = unsigned long long;
using u32 = unsigned;
std::vector<int> minp, primes;

void sieve(int n) {
    minp.assign(n + 1, 0);
    primes.clear();
    
    for (int i = 2; i <= n; i++) {
        if (minp[i] == 0) {
            minp[i] = i;
            primes.push_back(i);
        }
        
        for (auto p : primes) {
            if (i * p > n) {
                break;
            }
            minp[i * p] = p;
            if (p == minp[i]) {
                break;
            }
        }
    }
}

int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    
    int N;
    std::cin >> N;
    
    std::vector<int> P(N), A(N);
    for (int i = 0; i < N; i++) {
        std::cin >> P[i];
        P[i]--;
    }
    for (int i = 0; i < N; i++) {
        std::cin >> A[i];
        A[i]--;
    }
    
    sieve(N);
    
    std::vector<int> f(N + 1, -1);
    
    std::vector<bool> vis(N);
    
    std::vector<int> ans(N);
    
    for (int i = 0; i < N; i++) {
        if (vis[i]) {
            continue;
        }
        std::vector<int> c;
        int j = i;
        while (!vis[j]) {
            vis[j] = true;
            c.push_back(j);
            j = P[j];
        }
        const int L = c.size();
        
        std::vector<int> ps;
        int x = L;
        while (x > 1) {
            int p = minp[x];
            int v = 1;
            while (x % p == 0) {
                x /= p;
                v *= p;
                ps.push_back(v);
            }
        }
        
        int k = -1;
        for (int i = 0; i < L; i++) {
            bool ok = true;
            for (auto p : ps) {
                if (f[p] != -1 && i % p != f[p]) {
                    ok = false;
                }
            }
            if (ok && (k == -1 || A[c[i]] < A[c[k]])) {
                k = i;
            }
        }
        assert(k != -1);
        for (int i = 0; i < L; i++) {
            ans[c[i]] = A[c[(i + k) % L]];
        }
        for (auto p : ps) {
            f[p] = k % p;
        }
    }
    for (int i = 0; i < N; i++) {
        std::cout << ans[i] + 1 << " \n"[i == N - 1];
    }
    
    return 0;
}

Submission Info

Submission Time
Task G - Lexicographically Smallest Permutation
User jiangly
Language C++ 20 (gcc 12.2)
Score 575
Code Size 2310 Byte
Status AC
Exec Time 37 ms
Memory 8264 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 575 / 575
Status
AC × 3
AC × 91
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 01_random_18.txt, 01_random_19.txt, 01_random_20.txt, 01_random_21.txt, 01_random_22.txt, 01_random_23.txt, 01_random_24.txt, 01_random_25.txt, 01_random_26.txt, 01_random_27.txt, 01_random_28.txt, 01_random_29.txt, 01_random_30.txt, 01_random_31.txt, 01_random_32.txt, 01_random_33.txt, 01_random_34.txt, 01_random_35.txt, 01_random_36.txt, 01_random_37.txt, 01_random_38.txt, 01_random_39.txt, 01_random_40.txt, 01_random_41.txt, 01_random_42.txt, 01_random_43.txt, 01_random_44.txt, 01_random_45.txt, 01_random_46.txt, 01_random_47.txt, 01_random_48.txt, 01_random_49.txt, 01_random_50.txt, 01_random_51.txt, 01_random_52.txt, 01_random_53.txt, 01_random_54.txt, 01_random_55.txt, 01_random_56.txt, 01_random_57.txt, 01_random_58.txt, 01_random_59.txt, 01_random_60.txt, 01_random_61.txt, 01_random_62.txt, 01_random_63.txt, 01_random_64.txt, 01_random_65.txt, 01_random_66.txt, 01_random_67.txt, 01_random_68.txt, 01_random_69.txt, 01_random_70.txt, 01_random_71.txt, 01_random_72.txt, 01_random_73.txt, 01_random_74.txt, 01_random_75.txt, 01_random_76.txt, 01_random_77.txt, 01_random_78.txt, 01_random_79.txt, 02_small_80.txt, 02_small_81.txt, 02_small_82.txt, 02_small_83.txt, 02_small_84.txt, 02_small_85.txt, 02_small_86.txt, 02_small_87.txt, 02_small_88.txt, 02_small_89.txt, 02_small_90.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 1 ms 3372 KiB
00_sample_01.txt AC 1 ms 3520 KiB
00_sample_02.txt AC 1 ms 3520 KiB
01_random_03.txt AC 35 ms 7912 KiB
01_random_04.txt AC 35 ms 8264 KiB
01_random_05.txt AC 37 ms 7688 KiB
01_random_06.txt AC 35 ms 7720 KiB
01_random_07.txt AC 36 ms 8108 KiB
01_random_08.txt AC 35 ms 8176 KiB
01_random_09.txt AC 35 ms 7752 KiB
01_random_10.txt AC 35 ms 7756 KiB
01_random_11.txt AC 10 ms 4656 KiB
01_random_12.txt AC 20 ms 6128 KiB
01_random_13.txt AC 10 ms 4728 KiB
01_random_14.txt AC 2 ms 3468 KiB
01_random_15.txt AC 27 ms 6836 KiB
01_random_16.txt AC 16 ms 5384 KiB
01_random_17.txt AC 35 ms 7400 KiB
01_random_18.txt AC 35 ms 7348 KiB
01_random_19.txt AC 35 ms 7308 KiB
01_random_20.txt AC 35 ms 7172 KiB
01_random_21.txt AC 36 ms 7056 KiB
01_random_22.txt AC 35 ms 7304 KiB
01_random_23.txt AC 35 ms 7392 KiB
01_random_24.txt AC 28 ms 6900 KiB
01_random_25.txt AC 33 ms 7776 KiB
01_random_26.txt AC 31 ms 7336 KiB
01_random_27.txt AC 8 ms 4152 KiB
01_random_28.txt AC 7 ms 4120 KiB
01_random_29.txt AC 16 ms 5432 KiB
01_random_30.txt AC 23 ms 5972 KiB
01_random_31.txt AC 35 ms 7332 KiB
01_random_32.txt AC 33 ms 7284 KiB
01_random_33.txt AC 27 ms 7444 KiB
01_random_34.txt AC 29 ms 7548 KiB
01_random_35.txt AC 36 ms 7828 KiB
01_random_36.txt AC 36 ms 7656 KiB
01_random_37.txt AC 35 ms 7640 KiB
01_random_38.txt AC 36 ms 8080 KiB
01_random_39.txt AC 36 ms 7856 KiB
01_random_40.txt AC 36 ms 7748 KiB
01_random_41.txt AC 36 ms 8120 KiB
01_random_42.txt AC 36 ms 8120 KiB
01_random_43.txt AC 35 ms 8112 KiB
01_random_44.txt AC 35 ms 7388 KiB
01_random_45.txt AC 35 ms 7400 KiB
01_random_46.txt AC 35 ms 7424 KiB
01_random_47.txt AC 36 ms 7076 KiB
01_random_48.txt AC 35 ms 6952 KiB
01_random_49.txt AC 35 ms 7236 KiB
01_random_50.txt AC 35 ms 7300 KiB
01_random_51.txt AC 32 ms 7376 KiB
01_random_52.txt AC 19 ms 6140 KiB
01_random_53.txt AC 34 ms 7872 KiB
01_random_54.txt AC 8 ms 4172 KiB
01_random_55.txt AC 13 ms 4876 KiB
01_random_56.txt AC 22 ms 5984 KiB
01_random_57.txt AC 31 ms 7076 KiB
01_random_58.txt AC 34 ms 7668 KiB
01_random_59.txt AC 2 ms 3652 KiB
01_random_60.txt AC 28 ms 7408 KiB
01_random_61.txt AC 28 ms 7048 KiB
01_random_62.txt AC 28 ms 7436 KiB
01_random_63.txt AC 28 ms 7012 KiB
01_random_64.txt AC 28 ms 7008 KiB
01_random_65.txt AC 27 ms 7088 KiB
01_random_66.txt AC 27 ms 7356 KiB
01_random_67.txt AC 26 ms 7404 KiB
01_random_68.txt AC 22 ms 7100 KiB
01_random_69.txt AC 20 ms 6900 KiB
01_random_70.txt AC 36 ms 7412 KiB
01_random_71.txt AC 32 ms 7132 KiB
01_random_72.txt AC 36 ms 7416 KiB
01_random_73.txt AC 28 ms 7404 KiB
01_random_74.txt AC 28 ms 7344 KiB
01_random_75.txt AC 36 ms 7388 KiB
01_random_76.txt AC 31 ms 7436 KiB
01_random_77.txt AC 35 ms 7368 KiB
01_random_78.txt AC 28 ms 7364 KiB
01_random_79.txt AC 28 ms 7372 KiB
02_small_80.txt AC 1 ms 3480 KiB
02_small_81.txt AC 1 ms 3440 KiB
02_small_82.txt AC 1 ms 3400 KiB
02_small_83.txt AC 1 ms 3516 KiB
02_small_84.txt AC 1 ms 3508 KiB
02_small_85.txt AC 1 ms 3516 KiB
02_small_86.txt AC 1 ms 3512 KiB
02_small_87.txt AC 1 ms 3500 KiB
02_small_88.txt AC 1 ms 3404 KiB
02_small_89.txt AC 1 ms 3640 KiB
02_small_90.txt AC 1 ms 3500 KiB