Advertisement
Guest User

Untitled

a guest
May 23rd, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.91 KB | None | 0 0
  1. /******************************************************************************
  2.  
  3.                               Online C++ Compiler.
  4.                Code, Compile, Run and Debug C++ program online.
  5. Write your code in this editor and press "Run" button to compile and execute it.
  6.  
  7. *******************************************************************************/
  8.  
  9. #include <iostream>
  10. #include <algorithm>
  11. #include <cmath>
  12. using namespace std;
  13.  
  14. struct tacka
  15. {
  16.   int x,y;  
  17. };
  18.  
  19.     bool prov(tacka a,tacka b)
  20.     {
  21.         return a.x<b.x;
  22.     }
  23.  
  24.  
  25. int main()
  26. {
  27.    
  28.     long n;
  29.     cin>>n;
  30.     if(n==1||n==2)
  31.     {
  32.         cout<<n;
  33.         return -1;
  34.     }
  35.     tacka niz[n];
  36.     for (int i=0;i<n;i++)
  37.     {
  38.         cin>>niz[i].x>>niz[i].y;
  39.     }
  40.     sort(niz,niz+n,prov);
  41.    
  42.     long pov=0,pr=0;
  43.     int br =0;
  44.     int ind=-1;
  45.     while(br!=n-1)
  46.     {
  47.         pr=abs(niz[br].x-niz[br+1].x)*abs(niz[br].y-niz[br+1].y);
  48.         if(pr>pov)
  49.         {
  50.             pov=pr;
  51.             ind=br;
  52.         }
  53.         if(pr==pov&&( (abs(niz[0].x-niz[br].x)*abs(niz[0].y-niz[br].y)+abs(niz[n-1].x-niz[br+1].x)*abs(niz[n-1].y-niz[br+1].y)) <  (abs(niz[0].x-niz[ind].x)
  54.         *abs(niz[0].y-niz[ind].y)+
  55.         abs(niz[n-1].x-niz[ind+1].x)*
  56.         abs(niz[n-1].y-niz[ind+1].y))))
  57.         {
  58.        
  59.             pov=pr;
  60.             ind=br;
  61.         }
  62.        
  63.        
  64.         br++;
  65.         pr=0;
  66.     }
  67.     int mak=0,mas=0,minn=19000,mins=19000;
  68.     for(int i=0;i<=ind;i++)
  69.     {
  70.         mak=max(niz[i].y,mak);
  71.         minn=min(niz[i].y,minn);
  72.     }
  73.     for(int i=ind+1;i<n;i++)
  74.     {
  75.         mas=max(niz[i].y,mas);
  76.         mins=min(niz[i].y,mins);
  77.     }
  78.    
  79.     long povr=abs(niz[0].x-niz[ind].x)*abs(minn-mak)+abs(niz[n-1].x-niz[ind+1].x)*abs(mins-mas);
  80.    
  81.     if(niz[0].x==niz[ind].x)
  82.         povr++;
  83.     if(niz[n-1].x==niz[ind+1].x)
  84.         povr++;
  85.     cout<<povr;    
  86.     return 0;
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement