Submission #13081304


Source Code Expand

#include <bits/stdc++.h>

// definitions
#define F first
#define S second
#define all(x) x.begin(), x.end()
#define clr(x) memset(x, 0, sizeof(x))
#define rep(i, l, r) for (long long i = (l); i < (long long)(r); i++)
#define repb(i, r, l) for (long long i = (r); i > (long long)(l); i--)
#define pb push_back
#define pf push_front
#define mod1 998244353
#define mod 1000000007
#define MAX_CHAR 256


using namespace std;
typedef vector<long long> vl;
typedef vector<char> vc;
typedef vector<string> vs;
typedef vector< pair<long long, long long> > vp;
typedef vector<tuple<long long , long long , long long> > vtup;
typedef deque <long long> dql;
typedef deque <char> dqc;
typedef long double ld;
typedef long long ll;
typedef unsigned long long ull;


// prevent collisions in unordered_map
struct custom_hash {
    static uint64_t splitmix64(uint64_t x) {
        x += 0x9e3779b97f4a7c15;
        x = (x ^ (x >> 30)) * 0xbf58476d1ce4e5b9;
        x = (x ^ (x >> 27)) * 0x94d049bb133111eb;
        return x ^ (x >> 31);
    }

    size_t operator()(uint64_t x) const {
        static const uint64_t FIXED_RANDOM = chrono::steady_clock::now().time_since_epoch().count();
        return splitmix64(x + FIXED_RANDOM);
    }
};

typedef unordered_map <long long, long long, custom_hash> umap;


// standard functions
ll gcd(ll x, ll y) {
    if (x < y) return gcd(y, x);
    if (y == 0) return x;
    return gcd(y, x % y);
} 

ll mystoi(string str)
{
    stringstream ss(str);
    ll ans=0;
    ss >> ans;

    return ans;
}


ll exp(ll x, ll ex) {
    ll ans = 1ll;
    while (ex > 0) {
        if (ex & 1ll) ans = (ans * x);
        ex >>= 1ll;
        x = (x * x);
    }
    return ans;
} 
 
ll nCrModp(ll n, ll r, ll p) 
{ 
    ll C[r+1]; 
    memset(C, 0, sizeof(C)); 
  
    C[0] = 1; 
    for (ll i = 1; i <= n; i++) 
    { 
        for (ll j = min(i, r); j > 0; j--) 
            C[j] = (C[j] + C[j-1])%p; 
    } 
    return C[r]; 
}
 
bool isPrime(ll n) 
{ 
    if (n <= 1)  return false; 
    if (n <= 3)  return true;  
    if (n%2 == 0 || n%3 == 0) return false; 
  
    for (ll i=5; i*i<=n; i=i+6) 
        if (n%i == 0 || n%(i+2) == 0) 
           return false; 
  
    return true; 
} 
 
vl countFreq(ll arr[], ll n) 
{ 
    unordered_map<ll, ll> mp; 
    vector <ll> v;
    
    for (ll i = 0; i < n; i++) 
        mp[arr[i]]++; 
   
    for (auto x : mp) 
        v.pb(x.second);
    
    return v;
}

ll binarySearch(ll arr[], ll l, ll r, ll x) 
{ 
    while (l <= r) 
    { 
        ll m = l + (r - l) / 2; 
        if (arr[m] == x) 
            return m; 
        if (arr[m] < x) 
            l = m + 1; 
        else
            r = m - 1; 
    }
    return -1; 
}

bool sort_cond(const pair<ll,ll> &a, const pair <ll,ll> &b)
{
    return a.second > b.second;
}

const ll MAXSIEVE=(1e3);
ll spf[MAXSIEVE];
void sieve() 
{ 
    spf[1] = 1; 
    for (ll i=2; i<MAXSIEVE; i++) 
        spf[i] = i; 

    for (ll i=4; i<MAXSIEVE; i+=2) 
        spf[i] = 2; 
  
    for (ll i=3; i*i<MAXSIEVE; i++) 
    { 
        if (spf[i] == i) 
        { 
            for (ll j=i*i; j<MAXSIEVE; j+=i) 
                if (spf[j]==j) 
                    spf[j] = i; 
        } 
    } 
}

bool findPair(int arr[], int size, int n)  
{
    int i = 0;  
    int j = 1;  
  
    while (i < size && j < size)  
    {  
        if(j-i>1 && arr[j]-arr[i]==n)
        return true;

        else if(arr[j]-arr[i]<=n)
            j++;
        else
            i++;

    }  
    return false;  
}



// code beigns in main
int main()
{

    #ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    #endif
    
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    ll t=1;
    // cin >> t;
    
    while(t--)
    {
        ll n,k;
        cin >> n >>k;

        ll arr[n];
        ll count[(ll)4e5]={0};
        rep(i,0,n)
        {
            cin >> arr[i];
        }


        if(k<=n)
        {
            ll t=1;
            rep(i,0,k)
            {
                t=arr[t-1];
            }
            cout << t << endl;
            return 0;
        }


        vl seq;
        ll tar;
        ll t=1;
        while(true)
        {
            if(count[t]==1)
            {
                tar=t;
                break;
            }
            else
            {
                count[t]++;
                seq.pb(t);
                t=arr[t-1];
            }
        }

        vl ans;
        ll sub=0;
        bool ok=1;
        rep(i,0,seq.size())
        {
            if(seq[i]!=tar && ok)
                sub++;
            else
            {
                ok=0;
                ans.pb(seq[i]);
            }
        }

        // cout << sub << endl;
        // rep(i,0,ans.size())
        // cout << ans[i] <<" ";

        // cout << endl;

        ll v=k-sub;
        v%=ans.size();
        cout << ans[v] << endl;
    }
}

Submission Info

Submission Time
Task D - Teleporter
User Imperial_Lord
Language C++ (GCC 9.2.1)
Score 400
Code Size 5149 Byte
Status AC
Exec Time 34 ms
Memory 10996 KiB

Judge Result

Set Name Sample Subtask1
Score / Max Score 0 / 0 400 / 400
Status
AC × 2
AC × 57
Set Name Test Cases
Sample sample_01.txt, sample_02.txt
Subtask1 sample_01.txt, sample_02.txt, sub1_01.txt, sub1_02.txt, sub1_03.txt, sub1_04.txt, sub1_05.txt, sub1_06.txt, sub1_07.txt, sub1_08.txt, sub1_09.txt, sub1_10.txt, sub1_11.txt, sub1_12.txt, sub1_13.txt, sub1_14.txt, sub1_15.txt, sub1_16.txt, sub1_17.txt, sub1_18.txt, sub1_19.txt, sub1_20.txt, sub1_21.txt, sub1_22.txt, sub1_23.txt, sub1_24.txt, sub1_25.txt, sub1_26.txt, sub1_27.txt, sub1_28.txt, sub1_29.txt, sub1_30.txt, sub1_31.txt, sub1_32.txt, sub1_33.txt, sub1_34.txt, sub1_35.txt, sub1_36.txt, sub1_37.txt, sub1_38.txt, sub1_39.txt, sub1_40.txt, sub1_41.txt, sub1_42.txt, sub1_43.txt, sub1_44.txt, sub1_45.txt, sub1_46.txt, sub1_47.txt, sub1_48.txt, sub1_49.txt, sub1_50.txt, sub1_51.txt, sub1_52.txt, sub1_53.txt, sub1_54.txt, sub1_55.txt
Case Name Status Exec Time Memory
sample_01.txt AC 8 ms 6580 KiB
sample_02.txt AC 5 ms 6692 KiB
sub1_01.txt AC 11 ms 6916 KiB
sub1_02.txt AC 19 ms 7760 KiB
sub1_03.txt AC 7 ms 6864 KiB
sub1_04.txt AC 25 ms 8160 KiB
sub1_05.txt AC 22 ms 8280 KiB
sub1_06.txt AC 17 ms 7684 KiB
sub1_07.txt AC 18 ms 7716 KiB
sub1_08.txt AC 20 ms 8240 KiB
sub1_09.txt AC 20 ms 9568 KiB
sub1_10.txt AC 22 ms 8104 KiB
sub1_11.txt AC 14 ms 7536 KiB
sub1_12.txt AC 23 ms 8484 KiB
sub1_13.txt AC 26 ms 8472 KiB
sub1_14.txt AC 28 ms 9968 KiB
sub1_15.txt AC 17 ms 7692 KiB
sub1_16.txt AC 24 ms 8292 KiB
sub1_17.txt AC 18 ms 7772 KiB
sub1_18.txt AC 22 ms 8148 KiB
sub1_19.txt AC 13 ms 7184 KiB
sub1_20.txt AC 34 ms 9852 KiB
sub1_21.txt AC 17 ms 7580 KiB
sub1_22.txt AC 22 ms 7900 KiB
sub1_23.txt AC 15 ms 7400 KiB
sub1_24.txt AC 22 ms 7840 KiB
sub1_25.txt AC 27 ms 10552 KiB
sub1_26.txt AC 19 ms 8592 KiB
sub1_27.txt AC 20 ms 7600 KiB
sub1_28.txt AC 18 ms 7684 KiB
sub1_29.txt AC 13 ms 7396 KiB
sub1_30.txt AC 19 ms 8108 KiB
sub1_31.txt AC 7 ms 6852 KiB
sub1_32.txt AC 17 ms 7744 KiB
sub1_33.txt AC 8 ms 7008 KiB
sub1_34.txt AC 22 ms 7580 KiB
sub1_35.txt AC 6 ms 6900 KiB
sub1_36.txt AC 26 ms 8844 KiB
sub1_37.txt AC 24 ms 8148 KiB
sub1_38.txt AC 25 ms 8248 KiB
sub1_39.txt AC 22 ms 8384 KiB
sub1_40.txt AC 13 ms 7032 KiB
sub1_41.txt AC 22 ms 8200 KiB
sub1_42.txt AC 24 ms 8184 KiB
sub1_43.txt AC 24 ms 8240 KiB
sub1_44.txt AC 26 ms 8184 KiB
sub1_45.txt AC 31 ms 10996 KiB
sub1_46.txt AC 25 ms 8344 KiB
sub1_47.txt AC 24 ms 8292 KiB
sub1_48.txt AC 26 ms 8332 KiB
sub1_49.txt AC 25 ms 8888 KiB
sub1_50.txt AC 23 ms 8356 KiB
sub1_51.txt AC 21 ms 8152 KiB
sub1_52.txt AC 16 ms 7456 KiB
sub1_53.txt AC 11 ms 7132 KiB
sub1_54.txt AC 25 ms 8260 KiB
sub1_55.txt AC 23 ms 8304 KiB