Cod sursa(job #123487)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 16 ianuarie 2008 10:16:44
Problema PScPld Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include<stdio.h>
#include<string.h>
struct nod{long int st;long int dr;nod *next;};
nod *prim,*ultim,*pp,*qq;
char *s,sir[1000005];
long int ll,i,sst,ddr,sol;
void init1();
void init2();
void ad();
int main()
{
	FILE *f,*g;f=fopen("pscpld.in","r");g=fopen("pscpld.out","w");
	s=&sir[0];fscanf(f,"%s",s);
	ll=strlen(s);
	prim=new nod;prim->st=0;prim->dr=0;prim->next=0;ultim=prim;
	for(i=1;i<ll;i++)init1();
	for(i=0;i<ll-1;i++)if(s[i]==s[i-1])init2();
	pp=prim;
	while(pp)
	{ sol++;
	  sst=pp->st-1;ddr=pp->dr+1;
	  if(sst>=0&&ddr<ll&&s[sst]==s[ddr])ad();
	  qq=pp;pp=pp->next;delete qq;
	}
	fprintf(g,"%ld\n",sol);
	return 0;
}
void init1()
{
	nod *paux;paux=new nod;
	paux->st=i;paux->dr=i;paux->next=0;
	ultim->next=paux;ultim=paux;
}
void init2()
{
	nod *paux;paux=new nod;
	paux->st=i;paux->dr=i+1;paux->next=0;
	ultim->next=paux;ultim=paux;
}
void ad()
{
	nod *paux;paux=new nod;
	paux->st=sst;paux->dr=ddr;paux->next=0;
	ultim->next=paux;ultim=paux;
}