Cod sursa(job #2923150)
| Utilizator | Data | 11 septembrie 2022 19:41:20 | |
|---|---|---|---|
| Problema | Reguli | Scor | 20 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.71 kb |
#include<bits/stdc++.h>
#define int long long
using namespace std;
ifstream f("reguli.in");
ofstream g("reguli.out");
int n,v[500005],dif[500005],l[500005],nou[500005],k1;
signed main()
{
int i,k=0;
f>>n;
for(i=1;i<=n;i++)
f>>v[i];
for(i=2;i<=n;i++)
{
dif[i-1]=v[i]-v[i-1];
}
l[1]=0;
for(i=2;i<n;i++)
{
while(k>0 && dif[k+1]!=dif[i])
k=l[k];
if(dif[k+1]==dif[i])
k++;
l[i]=k;
}
for(i=1;i<n;i++)
{
if(l[i]==0)
{
k1++;
nou[k1]=dif[i];
}
}
g<<k1<<'\n';
for(i=1;i<=k1;i++)
g<<nou[i]<<'\n';
return 0;
}
