Cod sursa(job #79843)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 24 august 2007 01:51:41
Problema PScPld Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#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);
}