#include <stdio.h>
#include <stdlib.h>
typedef struct _SLine
{
double start;
double end;
double length()
{
return (end-start);
}
}Line;
typedef struct _SJLine
{
double start;
double end;
double length()
{
return (end-start);
}
int *m;
void set_mas_leng(int l)
{
m=(int*)malloc(l*sizeof(int));
}
}JLine;
int read(const char *sf,Line **mas,int *leng)
{
FILE *f;
int i=0;
double xz1,xz2;
f=fopen(sf,"r");
if(fscanf(f,"%d",leng)!=1) return -1;
else
{
(*mas)=(Line*)malloc(*leng/2*sizeof(Line));
for(i=0;i<*leng;i++)
{
fscanf(f,"%lf", &xz1);
fscanf(f,"%lf", &xz2);
(*mas+i)->start=xz1;
(*mas+i)->end=xz2;
}
*leng=*leng/2;
fclose(f);
}
return 0;
}
int consist(JLine l1,Line l2) //prinadlejit li l2 sisteme otrezkov l1 i vihodit za ee predeli
{
if(l2.start>=l1.start&&l2.start<=l1.end && l2.end>l1.end) return 1; else return 0;
}
void set_zero(int *m,int l)
{
int i;
for(i=0;i<l;i++)
{
m[i]=0;
}
}
int main(int __argc,const char *__argv[])
{
if(__argc>1)
{
FILE *f;
Line *mas;
JLine l,max;
int leng=0,i=0,g=0,h=0;
if(read(__argv[1],&mas,&leng)==0)
{
l.set_mas_leng(leng);max.set_mas_leng(leng);
max.start=0;max.end=0;
for(i=0;i<leng;i++)
{
set_zero(l.m,leng);
l.start=mas[i].start;l.end=mas[i].end;
l.m[i]=1;
for(g=0;g<leng;g++)
{
if(g!=i)
{
if(consist(l,mas[g])==1)
{
l.end=mas[g].end;
l.m[g]=1;
}
}
}
if(l.length()>max.length()) {max.start=l.start;max.end=l.end; for(h=0;h<leng;h++) max.m[h]=l.m[h];}
}
f=fopen(__argv[2],"w");
for(i=0;i<leng;i++)
{
if(max.m[i]==1) fprintf(f,"%lf %lf ",mas[i].start,mas[i].end);
}
fclose(f);
}
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KIAp0eXBlZGVmIHN0cnVjdCBfU0xpbmUKewogZG91YmxlIHN0YXJ0OwogZG91YmxlIGVuZDsKIGRvdWJsZSBsZW5ndGgoKQogewogIHJldHVybiAoZW5kLXN0YXJ0KTsKIH0KIAogCn1MaW5lOwogCnR5cGVkZWYgc3RydWN0IF9TSkxpbmUKewogZG91YmxlIHN0YXJ0OwogZG91YmxlIGVuZDsKIGRvdWJsZSBsZW5ndGgoKQogewogIHJldHVybiAoZW5kLXN0YXJ0KTsKIH0KIGludCAqbTsKIHZvaWQgc2V0X21hc19sZW5nKGludCBsKQogewogIG09KGludCopbWFsbG9jKGwqc2l6ZW9mKGludCkpOwogfQogCn1KTGluZTsKIAogCmludCByZWFkKGNvbnN0IGNoYXIgKnNmLExpbmUgKiptYXMsaW50ICpsZW5nKQp7CiBGSUxFICpmOwogaW50IGk9MDsKIGRvdWJsZSB4ejEseHoyOwogZj1mb3BlbihzZiwiciIpOwogaWYoZnNjYW5mKGYsIiVkIixsZW5nKSE9MSkgcmV0dXJuIC0xOyAKIGVsc2UKIHsKICAoKm1hcyk9KExpbmUqKW1hbGxvYygqbGVuZy8yKnNpemVvZihMaW5lKSk7CiAgZm9yKGk9MDtpPCpsZW5nO2krKykKICB7CiAgIGZzY2FuZihmLCIlbGYiLCAmeHoxKTsKICAgZnNjYW5mKGYsIiVsZiIsICZ4ejIpOwogICAoKm1hcytpKS0+c3RhcnQ9eHoxOwogICAoKm1hcytpKS0+ZW5kPXh6MjsKICB9CiAgKmxlbmc9KmxlbmcvMjsKICAgZmNsb3NlKGYpOwogfQogcmV0dXJuIDA7Cn0KIAogCiAKaW50IGNvbnNpc3QoSkxpbmUgbDEsTGluZSBsMikgLy9wcmluYWRsZWppdCBsaSBsMiBzaXN0ZW1lIG90cmV6a292IGwxIGkgdmlob2RpdCB6YSBlZSBwcmVkZWxpCnsKIGlmKGwyLnN0YXJ0Pj1sMS5zdGFydCYmbDIuc3RhcnQ8PWwxLmVuZCAmJiBsMi5lbmQ+bDEuZW5kKSByZXR1cm4gMTsgZWxzZSByZXR1cm4gMDsKfQogCnZvaWQgc2V0X3plcm8oaW50ICptLGludCBsKQp7CiBpbnQgaTsKIGZvcihpPTA7aTxsO2krKykKIHsKICBtW2ldPTA7CiB9Cn0KIAogCmludCBtYWluKGludCBfX2FyZ2MsY29uc3QgY2hhciAqX19hcmd2W10pCnsKIGlmKF9fYXJnYz4xKQogewogRklMRSAqZjsKIExpbmUgKm1hczsKIEpMaW5lIGwsbWF4OwogaW50IGxlbmc9MCxpPTAsZz0wLGg9MDsKICAgICAKICBpZihyZWFkKF9fYXJndlsxXSwmbWFzLCZsZW5nKT09MCkKICAgewogIGwuc2V0X21hc19sZW5nKGxlbmcpO21heC5zZXRfbWFzX2xlbmcobGVuZyk7CiAgbWF4LnN0YXJ0PTA7bWF4LmVuZD0wOwogIGZvcihpPTA7aTxsZW5nO2krKykKIHsKICBzZXRfemVybyhsLm0sbGVuZyk7CiAgbC5zdGFydD1tYXNbaV0uc3RhcnQ7bC5lbmQ9bWFzW2ldLmVuZDsKICBsLm1baV09MTsKICBmb3IoZz0wO2c8bGVuZztnKyspCiAgewogICBpZihnIT1pKQogICB7CiAgICBpZihjb25zaXN0KGwsbWFzW2ddKT09MSkKICAgIHsKICAgICBsLmVuZD1tYXNbZ10uZW5kOwogICAgIGwubVtnXT0xOwogICAgfQogICB9CiAKICB9CiAgaWYobC5sZW5ndGgoKT5tYXgubGVuZ3RoKCkpIHttYXguc3RhcnQ9bC5zdGFydDttYXguZW5kPWwuZW5kOyBmb3IoaD0wO2g8bGVuZztoKyspIG1heC5tW2hdPWwubVtoXTt9CiB9CiAgCiAgZj1mb3BlbihfX2FyZ3ZbMl0sInciKTsKICBmb3IoaT0wO2k8bGVuZztpKyspCiAgewogICBpZihtYXgubVtpXT09MSkgZnByaW50ZihmLCIlbGYgJWxmICIsbWFzW2ldLnN0YXJ0LG1hc1tpXS5lbmQpOyAKICAgCiAgfQogIGZjbG9zZShmKTsKIH0KIH0KfQ==