114892024-10-09 16:20:41MCDaveMagic Wandscpp17Elfogadva 100/100462ms11408 KiB
#include <iostream>
#include <vector>
#include <math.h>

using namespace std;

int gcd(int larger, int smaller)
{
    while (true)
    {
        if (larger < smaller) swap(larger, smaller);
        int m = larger % smaller;
        if (m == 0) return smaller;
        larger = m;
    }
}

int main()
{
    int i, n, temp1, x=0, lnko;
    cin >> n;
    vector<int> vec(n), avec(n);
    vector<bool> bvec(n);

    for (i = 0; i < n; i++)
    {
        cin >> temp1;
        vec[i] = --temp1;
        avec[i] = abs(temp1 - i);
    }

    for (i = 0; i < n; i++)
    {
        while (vec[i] != i)
        {
            swap(vec[i], vec[vec[i]]);
            x++;
        }
    }

    i = 0;
    while (i < n && avec[i] == 0) i++;
    if (i == n) 
    {
        for (i = 0; i < n; i++) cout << 0 << ' ';
        return 0;
    }
    lnko = avec[i];

    for (i++; i < n; i++)
    {
        if (avec[i] == 0) continue;
        lnko = gcd(avec[i], lnko);
    }

    for (i = 1; i <= n; i++)
    {
        if (lnko%i==0)
        {
            cout << x << ' ';
        }
        else
        {
            cout << -1 << ' ';
        }
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva2ms360 KiB
2Elfogadva3ms360 KiB
subtask214/14
3Elfogadva3ms360 KiB
4Elfogadva3ms384 KiB
5Elfogadva3ms360 KiB
6Elfogadva3ms360 KiB
7Elfogadva2ms368 KiB
8Elfogadva3ms376 KiB
9Elfogadva2ms512 KiB
subtask317/17
10Elfogadva3ms364 KiB
11Elfogadva2ms388 KiB
12Elfogadva3ms408 KiB
13Elfogadva3ms296 KiB
14Elfogadva2ms384 KiB
15Elfogadva2ms384 KiB
subtask423/23
16Elfogadva4ms408 KiB
17Elfogadva4ms504 KiB
18Elfogadva4ms384 KiB
19Elfogadva4ms400 KiB
20Elfogadva4ms504 KiB
21Elfogadva4ms504 KiB
subtask546/46
22Elfogadva43ms1512 KiB
23Elfogadva90ms2488 KiB
24Elfogadva228ms5676 KiB
25Elfogadva455ms11328 KiB
26Elfogadva448ms11368 KiB
27Elfogadva449ms11368 KiB
28Elfogadva448ms11408 KiB
29Elfogadva437ms10348 KiB
30Elfogadva462ms11284 KiB