Pagini recente » Cod sursa (job #2332969) | Cod sursa (job #2950751) | Cod sursa (job #1949897) | Cod sursa (job #2072844) | Cod sursa (job #123487)
Cod sursa(job #123487)
#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;
}