Pagini recente » Cod sursa (job #35848) | Cod sursa (job #1241892) | Cod sursa (job #2317768) | Cod sursa (job #2255871) | Cod sursa (job #79843)
Cod sursa(job #79843)
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct nod{
long int st;
long int dr;
nod *next;
};
nod *prim,*ultim;
char sir[1000002];
long int i,l;
long long int cont;
void pune(long int is,long int id);
void delcap();
int main()
{
FILE *f,*g;
f=fopen("pscpld.in","r");
g=fopen("pscpld.out","w");
fgets(sir,1000000,f);
prim=new nod;
ultim=new nod;
prim->st=0;
prim->dr=0;
prim->next=0;
ultim=prim;
cont++;
l=strlen(sir)-1;
for(i=1;i<l;i++)
pune(i,i);cont++;
for(i=0;i<l-1;i++)
{ if(sir[i]==sir[i+1])
{pune(i,i+1);cont++;}
}
while(prim)
{ if(prim->st>0)
if(prim->dr<l)
if(sir[prim->st-1]==sir[prim->dr+1])
{pune(prim->st-1,prim->dr+1);cont++;}
delcap();
}
fprintf(g,"%lld\n",cont);
return 0;
}
void pune(long int is,long int id)
{
nod *p;
p=new nod;
p->st=is;
p->dr=id;
p->next=0;
ultim->next=p;
ultim=p;
}
void delcap()
{
nod *p;
p=prim;
prim=prim->next;
free(p);
}