Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include <algorithm>
- #define x first
- #define y second
- #define M 1000000007
- using namespace std;
- pair<int,int> p[5001];
- int n,i,j,h,w,mini,maxi,mi,ma;
- int vs[5001][5001], vd[5001][5001];
- long long suma;
- int main()
- {
- ifstream cin("primar.in");
- ofstream cout("primar.out");
- ios_base::sync_with_stdio(false);
- cin.tie(0);
- cin >> n;
- for(i = 1; i <= n; i++)
- cin >> p[i].x >> p[i].y;
- sort(p+1, p+n+1);
- for(i = 1; i <= n; i++){
- maxi = 0;
- mini = M;
- mi = 0; ma = 0;
- for(j = i+1; j <= n; j++){
- if((p[j].y < mini)and(p[j].y > p[i].y)){
- mini = p[j].y;
- mi = j;
- }
- if((p[j].y > maxi)and(p[j].y < p[i].y)){
- maxi = p[j].y;
- ma = j;
- }
- if((mini < M)and(maxi > 0))
- {
- vs[mi][ma] = i;
- vs[ma][mi] = i;
- }
- }
- }
- for(i = n; i >= 1; i--){
- maxi = 0;
- mini = M;
- mi = 0; ma = 0;
- for(j = i-1; j >= 1; j--){
- if((p[j].y < mini)and(p[j].y > p[i].y)){
- mini = p[j].y;
- mi = j;
- }
- if((p[j].y > maxi)and(p[j].y < p[i].y)){
- maxi = p[j].y;
- ma = j;
- }
- if((mini < M)and(maxi > 0))
- {
- vd[mi][ma] = i;
- vd[ma][mi] = i;
- }
- }
- }
- suma = 0;
- for(i = 1; i < n; i++)
- for(j = i+1; j <= n; j++)
- if(vs[i][j] and vd[i][j]){
- if(p[i].y > p[j].y) h = p[i].y - p[j].y - 1;
- else h = p[j].y - p[i].y - 1;
- w = p[vd[i][j]].x - p[vs[i][j]].x - 1;
- suma += 1LL * h * w;
- }
- cout << suma % M << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement