Cod sursa(job #1800184)
| Utilizator | Data | 7 noiembrie 2016 15:11:43 | |
|---|---|---|---|
| Problema | Reguli | Scor | 80 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.58 kb |
#include<stdio.h>
#include<string.h>
using namespace std;
FILE*f=fopen("reguli.in","r");
FILE*g=fopen("reguli.out","w");
int n,x,y,i,j,k,v[500005],um[500005];
int main() {
fscanf(f,"%d%d",&n,&x);
for(i=2;i<=n;i++) {
fscanf(f,"%d",&y);
v[i-2]=y-x;
x=y;
}
k=0; um[1]=0;
for(i=2;i<=n-1;i++) {
while(k>0&&v[k]!=v[i-1]) k=um[k];
if(v[k]==v[i-1]) k++;
um[i]=k;
}
fprintf(g,"%d\n",n-1-um[n-1]);
for(i=0;i<n-1-um[n-1];i++) fprintf(g,"%d\n",v[i]);
fclose(f); fclose(g);
return 0;
}
