Pagini recente » Cod sursa (job #2819994) | Statisticile problemei Tnia | Cod sursa (job #1433715) | Cod sursa (job #2560836) | Cod sursa (job #137696)
Cod sursa(job #137696)
#include<stdio.h>
struct stalp
{
int x,c,s,d;
};
struct lista
{
int inf;
lista *urm;
};
const int Nmax=1000; //// !!!!
int N,gri[Nmax],gre[Nmax];
stalp S[Nmax];
lista *G[Nmax];
void cit()
{
int i;
freopen("stalpi.in","r",stdin);
scanf("%d",&N);
for(i=1;i<=N;i++)
scanf("%d%d%d%d",&S[i].x,&S[i].c,&S[i].s,&S[i].d);
}
int etc(int i,int j)
{
int i0=0,j0=-1,aux;
stalp a;
while(i!=j)
{
if(S[i].x>S[j].x)
{
a=S[i];
S[i]=S[j];
S[j]=a;
aux=-i0;
i0=-j0;
j0=aux;
}
i+=i0;
j+=j0;
}
return i;
}
void qsort(int li,int ls)
{
if(li<ls)
{
int k=etc(li,ls);
qsort(li,k-1);
qsort(k+1,ls);
}
}
void rez()
{
int i,j;
lista *C[Nmax];
qsort(1,N);
for(i=1;i<=N;i++)
{
G[i]=new lista;
C[i]=G[i];
for(j=i-1;j>=1;j--)
if(S[i].x-S[i].s<=S[j].x)
{
C[i]->urm=new lista;
C[i]=C[i]->urm;
C[i]->inf=j;
C[i]->urm=NULL;
gri[j]++;
gre[i]++;
A[j]=i;
}
for(j=i+1;j<=N;j++)
if(S[i].x+S[i].d>=S[j].x)
{
C[i]->urm=new lista;
C[i]=C[i]->urm;
C[i]->inf=j;
C[i]->urm=NULL;
gri[j]++;
gre[i]++;
A[j]=i;
}
}
int ok;
for(i=1;i<=N;i++)
if(gri[i]==1)
In[A[i]]=i;
for(i=1;i<=N;i++)
if(gri[i]>=2)
{
ok=0;
for(c=G[i]->urm;c;c=c->urm)
if(In[c->inf]==0&&min>)
if(ok)
for(c=G[i]->urm;c;c=c->urm)
if(
}
void scr()
{
}
int main()
{
cit();
rez();
scr();
return 0;
}