啊这题就是枚举子段,然后判断。判断就是搞个排序,排序就是……
代码就不看了,太简单了,不AC的给我去面壁思过
#include<bits/stdc++.h>
using namespace std;
const int N = 2e4 + 10;
int n, m;
int a[N], b[15];
int daan[N], cnt;
int ans;
bool pd (int p) {
int c[15];
for (int i = p; i <= p + m - 1; i++) c[i - p + 1] = a[i];
sort (c + 1, c + m + 1);
int P = c[1] - b[1];
for (int i = 2; i <= m; i++)
if (c[i] - b[i] != P) return false;
return true;
}
int main () {
scanf ("%d", &n);
for (int i = 1; i <= n; i++) scanf ("%d", &a[i]);
scanf ("%d", &m);
for (int i = 1; i <= m; i++) scanf ("%d", &b[i]);
sort (b + 1, b + m + 1);
for (int i = 1; i <= n - m + 1; i++)
if (pd (i))
daan[++cnt] = i;
printf ("%d\n", cnt);
for (int i = 1; i <= cnt; i++) printf ("%d\n", daan[i]);
return 0;
}
过啦过啦!
好的,我可以去面壁思过了自己没想就来看题解