Cod sursa(job #123491)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 16 ianuarie 2008 10:32:46
Problema PScPld Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include<stdio.h>
#include<string.h>
struct nod{long int st;long int dr;nod *next;};
nod *prim,*ultim,*pp;
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[1];fscanf(f,"%s",s);
	ll=strlen(s);sir[ll+1]='*';sir[0]='#';
	prim=new nod;prim->st=1;prim->dr=1;prim->next=0;ultim=prim;
	for(i=2;i<=ll;i++)init1();
	for(i=1;i<=ll;i++)if(sir[i]==sir[i+1])init2();
	while(prim)
	{ sol++;
	  if(sir[prim->st-1]==sir[prim->dr+1])ad();
	  pp=prim;prim=prim->next;delete pp;
	}
	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=prim->st-1;paux->dr=prim->dr+1;paux->next=0;
	ultim->next=paux;ultim=paux;
}