이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <stdio.h>
int N,K,M[101],X[101][1010],R[101][1010],PI[1010];
int main()
{
int i,j,k,l;
scanf ("%d %d",&N,&K);
for (i=0;i<N;i++){
scanf ("%d",&M[i]);
for (j=0;j<M[i];j++) scanf ("%d",&X[i][j]), R[i][M[i]-j-1] = X[i][j];
}
for (i=0;i<M[0]-K+1;i++){
PI[0] = k = -1;
for (j=1;j<K;j++){
while (k != -1 && X[0][i+j] != X[0][i+k+1]) k = PI[k];
if (X[0][i+j] == X[0][i+k+1]) k++;
PI[j] = k;
}
for (l=1;l<N;l++){
k = -1;
for (j=0;j<M[l];j++){
while (k != -1 && X[l][j] != X[0][i+k+1]) k = PI[k];
if (X[l][j] == X[0][i+k+1]) k++;
if (k == K - 1) break;
}
if (k == K - 1) continue;
k = -1;
for (j=0;j<M[l];j++){
while (k != -1 && R[l][j] != X[0][i+k+1]) k = PI[k];
if (R[l][j] == X[0][i+k+1]) k++;
if (k == K - 1) break;
}
if (k == K - 1) continue;
break;
}
if (l == N){printf ("YES"); return 0;}
}
printf ("NO");
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |