Cod sursa(job #784178)

Utilizator adascaluAlexandru Dascalu adascalu Data 5 septembrie 2012 00:28:00
Problema Reguli Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include<cstdio>
#include<vector>
#define MAXN 500000
using namespace std;
vector<long long >dif(MAXN);
int n;
FILE *g=fopen("reguli.out","w");
vector<long long > pi(MAXN);
void prefix(int lg)
{
	int i,k=0;
	pi[1]=0;
	for(i=2;i<=lg;i++)
	{
		while(k && dif[i]!=dif[k+1])
			k=pi[k];
		if(dif[i]==dif[k+1])
			k++;
		pi[i]=k;
	}
}
int main ()
{
	FILE * f=fopen("reguli.in","r");
	fscanf(f,"%u",&n);
	long long x,y;
	int i,lg;
	fscanf(f,"%lld",&x);
	for(i=1;i<=n;i++)
	{
		fscanf(f,"%lld",&y);
		dif[i]=y-x;
		x=y;
		
	}
	prefix(n-1);
	lg=n-1-pi[n-1];
	fprintf(g,"%u  %u\n",lg,pi[n-1]);
	for(i=1;i<=lg;i++)
	
	return 0;
}