Advertisement
STEFAN_STOYANOV

points

Jan 6th, 2023
24
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.26 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4. const int maxn = 5010;
  5. struct seg{
  6. int x1 , y1 , x2 , y2 ;
  7. seg() {
  8. x1 = y1 = x2 = y2 = 0 ;
  9. }
  10. seg( int _x1 , int _y1 , int _x2 , int _y2) {
  11. x1 = _x1 ;
  12. y1 = _y1 ;
  13. x2 = _x2 ;
  14. y2 = _y2 ;
  15. }
  16. void input () {
  17. cin>> x1 >> y1 >> x2 >> y2 ;
  18. }
  19. };
  20. int n;
  21. seg p [maxn] ;
  22. set < pair < int , int > > pst ;
  23. void walkthrough(int x1, int y1 ,int x2 , int y2 , int dx , int dy){
  24. for( int x = x1, y = y1 ; x <= x2 ; x += dx , y += dy)
  25. pst . insert ( { x , y } ) ;
  26. }
  27. int main()
  28. {
  29. ios_base::sync_with_stdio(false);
  30. cin.tie(0);
  31. cout.tie(0);
  32. cin >> n ;
  33. for ( int i = 0 ; i < n ; ++ i )
  34. p [i] . input () ;
  35. for ( int i = 0 ; i < n ; ++ i ){
  36. if ( p [i] . x1 == p [i] . x2){
  37. if( p [i] . y1 < p [i] . y2)
  38. for ( int y = p [i] . y1 ; y <= p [i] . y2 ; ++ y)
  39. pst . insert ( { p [i] . x1 , y } ) ;
  40. else for ( int y = p [i] . y2 ; y <= p [i] . y1 ; ++ y)
  41. pst . insert ( { p [i] . x1 , y } ) ;
  42. }
  43. else if ( p [i] . y1 == p [i] . y2){
  44. if( p [i] . x1 < p [i] . x2)
  45. for ( int x = p [i] . x1 ; x <= p [i] . x2 ; ++ x)
  46. pst . insert ( { x , p [i] . y1 } ) ;
  47. else for ( int x = p [i] . x2 ; x <= p [i] . x1 ; ++ x)
  48. pst . insert ( { x , p [i] . y1 } ) ;
  49. }
  50. else{
  51. int difx = abs ( p [i] . x2 - p [i] . x1 ) ;
  52. int dify = abs ( p [i] . y2 - p [i] . y1 ) ;
  53. int gcd = __gcd ( difx , dify ) ;
  54. int dx = difx / gcd ;
  55. int dy = dify / gcd ;
  56. /*walkthrough ( min ( p [i] . x1 , p [i] . x2) , min ( p [i] . y1 , p [i] . y2 ) ,
  57. max ( p [i] . x2 , p [i] . x2) , max ( p [i] . y1 , p [i] . y2 ) ,
  58. dx , dy ) ;*/
  59. if ( p [i] . x1 < p [i] . x2){
  60. if ( p [i] . y1 < p [i] . y2){
  61. int x = p [i] . x1 ;
  62. int y = p [i] . y1 ;
  63. for ( ; x <= p [i] . x2 ; x += dx , y += dy )
  64. pst . insert ( { x , y } ) ;
  65. }
  66. else{
  67. int x = p [i] . x1 ;
  68. int y = p [i] . y2 ;
  69. for ( ; x <= p [i] . x2 ; x += dx , y += dy )
  70. pst . insert ( { x , y } ) ;
  71. }
  72. }
  73. else{
  74. if ( p [i] . y1 < p [i] . y2){
  75. int x = p [i] . x2 ;
  76. int y = p [i] . y1 ;
  77. for ( ; x <= p [i] . x1 ; x += dx , y += dy )
  78. pst . insert ( { x , y } ) ;
  79. }
  80. else{
  81. int x = p [i] . x2 ;
  82. int y = p [i] . y2 ;
  83. for ( ; x <= p [i] . x1 ; x += dx , y += dy )
  84. pst . insert ( { x , y } ) ;
  85. }
  86. }
  87. }
  88. }
  89. cout << pst . size () << "\n" ;
  90. /*auto it = pst . begin () ;
  91. for ( ; it != pst . end () ; ++ it)
  92. cout << it -> first << " " << it -> second << "\n" ;*/
  93. return 0;
  94. }
  95.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement