Advertisement
a53

Primar

a53
Jan 20th, 2022
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.89 KB | None | 0 0
  1. #include <fstream>
  2. #include <algorithm>
  3. #define x first
  4. #define y second
  5. #define M 1000000007
  6. using namespace std;
  7. pair<int,int> p[5001];
  8. int n,i,j,h,w,mini,maxi,mi,ma;
  9. int vs[5001][5001], vd[5001][5001];
  10. long long suma;
  11.  
  12. int main()
  13. {
  14. ifstream cin("primar.in");
  15. ofstream cout("primar.out");
  16. ios_base::sync_with_stdio(false);
  17. cin.tie(0);
  18. cin >> n;
  19. for(i = 1; i <= n; i++)
  20. cin >> p[i].x >> p[i].y;
  21. sort(p+1, p+n+1);
  22.  
  23. for(i = 1; i <= n; i++){
  24. maxi = 0;
  25. mini = M;
  26. mi = 0; ma = 0;
  27. for(j = i+1; j <= n; j++){
  28. if((p[j].y < mini)and(p[j].y > p[i].y)){
  29. mini = p[j].y;
  30. mi = j;
  31. }
  32. if((p[j].y > maxi)and(p[j].y < p[i].y)){
  33. maxi = p[j].y;
  34. ma = j;
  35. }
  36. if((mini < M)and(maxi > 0))
  37. {
  38. vs[mi][ma] = i;
  39. vs[ma][mi] = i;
  40. }
  41.  
  42. }
  43. }
  44. for(i = n; i >= 1; i--){
  45. maxi = 0;
  46. mini = M;
  47. mi = 0; ma = 0;
  48. for(j = i-1; j >= 1; j--){
  49. if((p[j].y < mini)and(p[j].y > p[i].y)){
  50. mini = p[j].y;
  51. mi = j;
  52. }
  53. if((p[j].y > maxi)and(p[j].y < p[i].y)){
  54. maxi = p[j].y;
  55. ma = j;
  56. }
  57. if((mini < M)and(maxi > 0))
  58. {
  59. vd[mi][ma] = i;
  60. vd[ma][mi] = i;
  61. }
  62.  
  63. }
  64. }
  65. suma = 0;
  66. for(i = 1; i < n; i++)
  67. for(j = i+1; j <= n; j++)
  68. if(vs[i][j] and vd[i][j]){
  69. if(p[i].y > p[j].y) h = p[i].y - p[j].y - 1;
  70. else h = p[j].y - p[i].y - 1;
  71. w = p[vd[i][j]].x - p[vs[i][j]].x - 1;
  72. suma += 1LL * h * w;
  73. }
  74. cout << suma % M << endl;
  75. return 0;
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement