Submission #1302884


Source Code Expand

#include <bits/stdc++.h>
using namespace std;


#define REP(i, s, n) for(int i = s; i < n; ++i)
#define rep(i, n)		 REP(i, 0, n)
#define SORT(c)			 sort((c).begin(), (c).end())
#define IINF					INT_MAX
#define LLINF					LLONG_MAX
#define DEBUG					false
 
typedef long long				ll;
typedef pair <int, int> ii;

int main() {
	int n, a;
	ll k2 = LLINF;
	string k;
	cin >> n >> a >> k;
	vector<int> b(n+1);
	REP(i, 1, n + 1) cin >> b[i];
	if(k.size() < 9) k2 = stoi(k);
	vector<int> used;

	if(DEBUG) cout << n << endl << a << endl << k2 <<endl;

	if(DEBUG) REP(i, 1, n+1) cout << b[i] << endl;
	
	int word = a;
	int cycle;
	ll cnt = 0;
	vector<int>::iterator it;
	used.push_back(word);
	
	while(1){
		cnt++;
		word = b[word];
		if(DEBUG) cout << word << endl;
		if(cnt == k2){
			cout << word << endl;
			return 0;
		}
		it = find(used.begin(), used.end(), word);
		if(it != used.end()){
			cycle = used.size() - distance(used.begin(), it);
			break;
		}
		used.push_back(word);
	}
	if(DEBUG) cout << endl;
	
	if(DEBUG) rep(i, used.size()) cout << used[i] << endl;
	if(DEBUG) cout << endl;
	
	ll rem = 0;
	rep(i, k.size()){
		ll tmp = (ll)(k[i] - '0') + rem * 10;
		rem = tmp % cycle;
	}
	
	if(DEBUG) cout << rem << "\t" << cycle << "\t" << cnt << endl << endl;
	//cout << *it << endl << endl;
	//it = it + ((rem + cycle - cnt) % cycle);
	it = it + (((rem % cycle) + cycle * n - cnt) % cycle);
	cout << *it << endl;
	
	return 0;
}

Submission Info

Submission Time
Task D - へんてこ辞書
User letter
Language C++14 (GCC 5.4.1)
Score 100
Code Size 1494 Byte
Status AC
Exec Time 31 ms
Memory 896 KB

Judge Result

Set Name Sample Subtask1 All
Score / Max Score 0 / 0 50 / 50 50 / 50
Status
AC × 2
AC × 12
AC × 25
Set Name Test Cases
Sample subtask0_sample_01.txt, subtask0_sample_03.txt
Subtask1 subtask0_0.txt, subtask0_1.txt, subtask0_2.txt, subtask0_3.txt, subtask0_4.txt, subtask0_5.txt, subtask0_6.txt, subtask0_7.txt, subtask0_8.txt, subtask0_9.txt, subtask0_sample_01.txt, subtask0_sample_03.txt
All subtask0_0.txt, subtask0_1.txt, subtask0_2.txt, subtask0_3.txt, subtask0_4.txt, subtask0_5.txt, subtask0_6.txt, subtask0_7.txt, subtask0_8.txt, subtask0_9.txt, subtask0_sample_01.txt, subtask0_sample_03.txt, subtask1_0.txt, subtask1_1.txt, subtask1_10.txt, subtask1_11.txt, subtask1_2.txt, subtask1_3.txt, subtask1_4.txt, subtask1_5.txt, subtask1_6.txt, subtask1_7.txt, subtask1_8.txt, subtask1_9.txt, subtask1_sample_02.txt
Case Name Status Exec Time Memory
subtask0_0.txt AC 25 ms 640 KB
subtask0_1.txt AC 21 ms 512 KB
subtask0_2.txt AC 24 ms 512 KB
subtask0_3.txt AC 18 ms 512 KB
subtask0_4.txt AC 26 ms 640 KB
subtask0_5.txt AC 21 ms 512 KB
subtask0_6.txt AC 18 ms 512 KB
subtask0_7.txt AC 23 ms 512 KB
subtask0_8.txt AC 18 ms 512 KB
subtask0_9.txt AC 25 ms 640 KB
subtask0_sample_01.txt AC 1 ms 256 KB
subtask0_sample_03.txt AC 1 ms 256 KB
subtask1_0.txt AC 22 ms 640 KB
subtask1_1.txt AC 26 ms 768 KB
subtask1_10.txt AC 31 ms 896 KB
subtask1_11.txt AC 1 ms 256 KB
subtask1_2.txt AC 21 ms 640 KB
subtask1_3.txt AC 18 ms 512 KB
subtask1_4.txt AC 20 ms 640 KB
subtask1_5.txt AC 27 ms 768 KB
subtask1_6.txt AC 21 ms 640 KB
subtask1_7.txt AC 19 ms 640 KB
subtask1_8.txt AC 30 ms 768 KB
subtask1_9.txt AC 30 ms 768 KB
subtask1_sample_02.txt AC 1 ms 256 KB