Pagini recente » Cod sursa (job #1457489) | Cod sursa (job #2666921) | Cod sursa (job #657165) | Cod sursa (job #2873181) | Cod sursa (job #18269)
Cod sursa(job #18269)
#include <cstdio>
#define nmax 500005
int a[nmax],x[nmax],pi[nmax];
int n;
void prefix() {
int k = 0;
pi[1] = 0;
for(int i = 2; i < n; i++) {
while(k > 0 && x[k + 1] != x[i])
k = pi[k];
if(x[k + 1] == x[i]) k++;
pi[i] = k;
}
}
int main() {
freopen("reguli.in","r",stdin);
freopen("reguli.out","w",stdout);
scanf("%d\n",&n);
for(int i = 0; i < n; i++) scanf("%d\n",&a[i]);
for(int i = 1; i < n; i++) x[i] = a[i] - a[i - 1];
prefix();
for(int i = 1; i < n; i++) printf("%d ",x[i]);
printf("\n");
for(int i = 1; i < n; i++) printf("%d ",pi[i]);
printf("\n");
return 0;
}