200332025-12-31 10:25:54PappMatyasHírlánccpp17Accepted 80/8098ms10500 KiB
#include <iostream>
#include <vector>

using namespace std;

int n;
vector<int> send;
vector<int> length;
vector<int> current;
vector<int> pos;
vector<int> posStamp;
int globalStamp;

static void GetLength(int k)
{
    int e = current.size();
    if (length[k] != -1)
    {
        for (int i = 0; i < e; i++)
        {
            length[current[i]] = length[k] + e - i;
        }
        return;
    }
    if (posStamp[k] == globalStamp)
    {
        int i = pos[k];
        for (int j = i; j < e; j++)
        {
            length[current[j]] = e - i;
        }
        for (int j = 0; j < i; j++)
        {
            length[current[j]] = e - j;
        }
        return;
    }
    pos[k] = e;
    posStamp[k] = globalStamp;
    current.push_back(k);
    GetLength(send[k] - 1);
}

int main()
{
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        int in;
        cin >> in;
        send.push_back(in);
        length.push_back(-1);
        pos.push_back(-1);
        posStamp.push_back(-1);
    }
    for (int i = 0; i < n; i++)
    {
        globalStamp = i;
        if (length[i] == -1)
        {
            current.clear();
            GetLength(i);
        }
    }
    int max = 0, s = -1;
    for (int i = 0; i < n; i++)
    {
        if (length[i] > max)
        {
            max = length[i];
            s = i + 1;
        }
    }
    cout << s << " " << max;
    return 0;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms316 KiB
subtask220/20
2Accepted2ms316 KiB
3Accepted2ms316 KiB
4Accepted2ms316 KiB
5Accepted2ms316 KiB
6Accepted2ms316 KiB
7Accepted1ms316 KiB
8Accepted1ms316 KiB
9Accepted2ms316 KiB
10Accepted2ms316 KiB
11Accepted1ms316 KiB
12Accepted1ms316 KiB
subtask318/18
13Accepted89ms3480 KiB
14Accepted90ms3632 KiB
15Accepted87ms3716 KiB
16Accepted90ms4168 KiB
17Accepted93ms6048 KiB
18Accepted98ms6268 KiB
19Accepted92ms6280 KiB
20Accepted96ms6312 KiB
21Accepted94ms9220 KiB
22Accepted94ms10500 KiB
subtask442/42
23Accepted1ms512 KiB
24Accepted2ms316 KiB
25Accepted2ms316 KiB
26Accepted2ms316 KiB
27Accepted2ms316 KiB
28Accepted2ms316 KiB
29Accepted1ms316 KiB
30Accepted1ms316 KiB
31Accepted2ms316 KiB
32Accepted2ms316 KiB
33Accepted1ms316 KiB
34Accepted1ms316 KiB
35Accepted89ms3480 KiB
36Accepted90ms3632 KiB
37Accepted87ms3716 KiB
38Accepted90ms4168 KiB
39Accepted93ms6048 KiB
40Accepted98ms6268 KiB
41Accepted92ms6280 KiB
42Accepted96ms6312 KiB
43Accepted94ms9220 KiB
44Accepted94ms10500 KiB
45Accepted87ms3456 KiB
46Accepted85ms3476 KiB
47Accepted85ms3692 KiB
48Accepted87ms3820 KiB
49Accepted89ms3880 KiB
50Accepted89ms4456 KiB
51Accepted89ms4492 KiB
52Accepted90ms4508 KiB
53Accepted86ms5260 KiB
54Accepted89ms6544 KiB