Pagini recente » Cod sursa (job #1716041) | Cod sursa (job #1380060) | Cod sursa (job #3263530) | Cod sursa (job #2726984) | Cod sursa (job #18167)
Cod sursa(job #18167)
#include<fstream.h>
ifstream f("reguli.in");
ofstream g("reguli.out");
typedef struct _lista
{
long x;
_lista *urm;
}*Lista;
typedef struct _tiplista
{
Lista st,dr;
}TL;
TL lTot={0},lSec={0};
void adauga(TL &q,long x,int tip)
{
Lista nou=NULL;
if(tip==0)
{
nou=new _lista;nou->urm=NULL;nou->x=x;
q.dr->urm=nou;
q.dr=nou;
}
else
{
nou=new _lista;nou->urm=q.st;nou->x=x;
q.dr->urm=nou;
q.dr=nou;
}
}
int n=0,k=0;
int main()
{
int i=0;
long x0=0,x1=0,delta;
f>>n;
f>>x0;
f>>x1;
delta=x1-x0;
x0=x1;
Lista nou=NULL;
nou=new _lista;
nou->urm=NULL;nou->x=delta;
lTot.st=lTot.dr=nou;
nou=new _lista;nou->urm=nou;nou->x=delta;
lSec.st=lSec.dr=nou;
k=1;
Lista klea=lTot.st;
Lista curS=lSec.st,cur=NULL;
for(i=2;i<=n-1;i++)
{
f>>x1;
delta=x1-x0;
adauga(lTot,delta,0);
if(delta==curS->x)
curS=curS->urm;
else
{
for(cur=klea->urm;cur;cur=cur->urm)
adauga(lSec,cur->x,1),k++;
klea=lTot.dr;
curS=lSec.st;
}
x0=x1;
}
f.close();
g<<k<<"\n";
for(cur=lSec.st;cur!=lSec.dr;cur=cur->urm)
g<<cur->x<<"\n";
g<<cur->x<<"\n";
g.close();
return 0;
}