fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct _SLine
  5. {
  6. double start;
  7. double end;
  8. double length()
  9. {
  10. return (end-start);
  11. }
  12.  
  13.  
  14. }Line;
  15.  
  16. typedef struct _SJLine
  17. {
  18. double start;
  19. double end;
  20. double length()
  21. {
  22. return (end-start);
  23. }
  24. int *m;
  25. void set_mas_leng(int l)
  26. {
  27. m=(int*)malloc(l*sizeof(int));
  28. }
  29.  
  30. }JLine;
  31.  
  32.  
  33. int read(const char *sf,Line **mas,int *leng)
  34. {
  35. FILE *f;
  36. int i=0;
  37. double xz1,xz2;
  38. f=fopen(sf,"r");
  39. if(fscanf(f,"%d",leng)!=1) return -1;
  40. else
  41. {
  42. (*mas)=(Line*)malloc(*leng/2*sizeof(Line));
  43. for(i=0;i<*leng;i++)
  44. {
  45. fscanf(f,"%lf", &xz1);
  46. fscanf(f,"%lf", &xz2);
  47. (*mas+i)->start=xz1;
  48. (*mas+i)->end=xz2;
  49. }
  50. *leng=*leng/2;
  51. fclose(f);
  52. }
  53. return 0;
  54. }
  55.  
  56.  
  57.  
  58. int consist(JLine l1,Line l2) //prinadlejit li l2 sisteme otrezkov l1 i vihodit za ee predeli
  59. {
  60. if(l2.start>=l1.start&&l2.start<=l1.end && l2.end>l1.end) return 1; else return 0;
  61. }
  62.  
  63. void set_zero(int *m,int l)
  64. {
  65. int i;
  66. for(i=0;i<l;i++)
  67. {
  68. m[i]=0;
  69. }
  70. }
  71.  
  72.  
  73. int main(int __argc,const char *__argv[])
  74. {
  75. if(__argc>1)
  76. {
  77. FILE *f;
  78. Line *mas;
  79. JLine l,max;
  80. int leng=0,i=0,g=0,h=0;
  81.  
  82. if(read(__argv[1],&mas,&leng)==0)
  83. {
  84. l.set_mas_leng(leng);max.set_mas_leng(leng);
  85. max.start=0;max.end=0;
  86. for(i=0;i<leng;i++)
  87. {
  88. set_zero(l.m,leng);
  89. l.start=mas[i].start;l.end=mas[i].end;
  90. l.m[i]=1;
  91. for(g=0;g<leng;g++)
  92. {
  93. if(g!=i)
  94. {
  95. if(consist(l,mas[g])==1)
  96. {
  97. l.end=mas[g].end;
  98. l.m[g]=1;
  99. }
  100. }
  101.  
  102. }
  103. 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];}
  104. }
  105.  
  106. f=fopen(__argv[2],"w");
  107. for(i=0;i<leng;i++)
  108. {
  109. if(max.m[i]==1) fprintf(f,"%lf %lf ",mas[i].start,mas[i].end);
  110.  
  111. }
  112. fclose(f);
  113. }
  114. }
  115. }
Success #stdin #stdout 0s 4292KB
stdin
Standard input is empty
stdout
Standard output is empty