怎么黑人网站,建筑案例分析模板,如何备份网站数据,wordpress优酷视频插件下载题目描述 有n个小朋友#xff0c;每个小朋友手里有一些糖块#xff0c;现在这些小朋友排成一排#xff0c;编号是由1到n。现在给出m个数#xff0c;能不能唯一的确定一对值l和r(l r)#xff0c;使得这m个数刚好是第l个小朋友到第r个小朋友手里的糖块数#xff1f;输… 题目描述
有n个小朋友每个小朋友手里有一些糖块现在这些小朋友排成一排编号是由1到n。现在给出m个数能不能唯一的确定一对值l和r(l r)使得这m个数刚好是第l个小朋友到第r个小朋友手里的糖块数输入 首先输入一个整数n代表有n个小朋友。(0 输出
如果能唯一的确定一对l,r的值那么输出这两个值否则输出-1示例输入 5
1 2 3 4 5
3
2 3 4 示例输出 2 4 #include stdio.h #include stdlib.h #includestring.h #define max 1000000 int m,n; int next[max]; int s1[max],s2[max]; void get_next(int s2[],int next[]) { int i1; next[1]0; int j0; while(im) { if(j0||s2[i]s1[j]) { i;j; next[i]j; } else jnext[j]; } } void Index_KMP(int n,int m) { int pos1,j1,k0,a; while(posnjm) { if(j0||s1[pos]s2[j]) { pos;j; } else jnext[j]; if(jm) { j1;k; if(k1) { apos; } } } if(k1) { printf(%d %d\n,a-m,a-1); } else printf(-1\n); } int main() { int n,m,i,j; scanf(%d,n); for(i1;in;i) scanf(%d,s1[i]); scanf(%d,m); for(j1;jm;j) scanf(%d,s2[j]); get_next(s2,next); Index_KMP(n,m); return 0; }