Submission #538740


Source Code Expand

#include<cstdio>
#include<cstring>
#include<cctype>
#include<cmath>
#include<climits>
#include<algorithm>
#include<vector>
#include<valarray>
#include<string>
#include<set>
#include<map>
#include<stack>
#include<queue>
#include<iostream>
using namespace std;
  
  
#define rep(i,n) for(int i=0;i<n;i++)
#define REP(i,n) for(int i=1;i<=n;i++)
#define drep(i,n) for(int i=n-1;i>=0;i--)
#define DREP(i,n) for(int i=n;i>0;i--)
#define Rep(i,m,n) for(int i=m;i<n;i++)
#define scani(a) scanf("%d",&a)
#define scand(a) scanf("%lf",&a)
#define scans(s) scanf("%s",s)
#define readi(a) int a;scanf("%d",&a)
#define printi(a) printf("%d",a)
#define prints(s) printf("%s",s)
#define even(n) (((n)+1)%2)
#define odd(n) ((n)%2)
#define sg(x) ((x)?1:0)
#define LF printf("\n")
#define SPACE printf(" ")
#define pb push_back
#define mp make_pair
#define bs binary_search
#define all(a) (a).begin(),(a).end()
#define forall(itr,a) for(auto itr=a.begin();itr!=a.end();++itr)
#define MOD 1000000007
  
typedef long long LL;
typedef vector<int> vi;
typedef vector<vector<int> > vvi;
typedef pair<double,double> pdd;
typedef pair<int,int> pii;
  
const double pi=acos(-1.0);
double rad(double t){return t*pi/180.0;}
double deg(double d){return d*180.0/pi;}
int GCD(int x,int y){if(x<y)swap(x,y);return x%y?GCD(y,x%y):y;}
int LCM(int x,int y){return x/GCD(x,y)*y;}

int mod(string s,int x){
  int pos=0;
  int ret=0;
  while(pos<s.size()){
    if(ret>=x)ret %= x;
    else{
      ret = 10*ret + (s[pos]-'0');
      pos ++;
    }
  }
  return ret%x;
}


int main(){
  int N,a,b[100009];
  string k;
  cin >> N >> a >> k;
  for(int i=1;i<=N;i++){
    cin >> b[i];
  }

  int visited[100009]={};
  int pos=a;
  int before,loop;
  for(int i=1;;i++){
    visited[pos]=i;
    if(visited[b[pos]]!=0){
      before = visited[b[pos]] - 1;
      loop   = visited[pos] - visited[b[pos]] + 1;
      pos = b[pos];
      break;
    }
    pos = b[pos];
  }
  
  int ans;
  if(k.size()>6||atoi(k.c_str())>=before){
    ans = (mod(k,loop) - before + loop*before)%loop + before + 1 ;
  }else{
    ans = atoi(k.c_str()) + 1;
  }

  for(int i=1;i<=N;i++){
    if(visited[i]==ans)cout << i << endl;
  }
  return 0;
}

Submission Info

Submission Time
Task D - へんてこ辞書
User buko1062000
Language C++ (GCC 4.9.2)
Score 100
Code Size 2274 Byte
Status AC
Exec Time 83 ms
Memory 1756 KiB

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 73 ms 1496 KiB
subtask0_1.txt AC 64 ms 1500 KiB
subtask0_2.txt AC 69 ms 1500 KiB
subtask0_3.txt AC 57 ms 1436 KiB
subtask0_4.txt AC 74 ms 1568 KiB
subtask0_5.txt AC 63 ms 1496 KiB
subtask0_6.txt AC 58 ms 1372 KiB
subtask0_7.txt AC 70 ms 1572 KiB
subtask0_8.txt AC 59 ms 1372 KiB
subtask0_9.txt AC 69 ms 1500 KiB
subtask0_sample_01.txt AC 26 ms 1312 KiB
subtask0_sample_03.txt AC 26 ms 1300 KiB
subtask1_0.txt AC 64 ms 1628 KiB
subtask1_1.txt AC 70 ms 1752 KiB
subtask1_10.txt AC 83 ms 1752 KiB
subtask1_11.txt AC 28 ms 1312 KiB
subtask1_2.txt AC 63 ms 1500 KiB
subtask1_3.txt AC 59 ms 1516 KiB
subtask1_4.txt AC 62 ms 1628 KiB
subtask1_5.txt AC 78 ms 1700 KiB
subtask1_6.txt AC 64 ms 1624 KiB
subtask1_7.txt AC 60 ms 1560 KiB
subtask1_8.txt AC 79 ms 1628 KiB
subtask1_9.txt AC 80 ms 1756 KiB
subtask1_sample_02.txt AC 28 ms 1308 KiB