제출 #288922

#제출 시각아이디문제언어결과실행 시간메모리
288922mohammadRectangles (IOI19_rect)C++14
0 / 100
71 ms25208 KiB
#include "rect.h" #include<bits/stdc++.h> using namespace std; #define endl "\n" // #define int long long typedef long long ll ; const ll ooo = 1e14 ; const ll oo = 2e9 ; const double PI = acos(-1) ; const ll M = 1e9 + 7 ; const int N = 10000010 ; bool val[2510][2510] , sum[2510][2510]; int r[4] = {1 , -1 , 0 , 0} , c[4] = {0 , 0 , 1 , -1} ; ll count_rectangles(vector<vector<int> > a) { int n = a.size() , m = a[0].size(); ll ans = 0; for(int i = 1 ; i < n - 1 ; ++i){ for(int j = 1 ; j < m - 1 ; ++j){ bool flag = 1 ; for(int k = 0 ; k < 4 ; ++k){ int x = i + r[k] , y = j + c[k]; if(a[i][j] >= a[x][y]){ flag = 0; break; } } if(!flag) continue ; int end = m - 1; for(int i1 = i ; i1 < n - 1 ; ++i1){ if(!(end - j)) break; for(int j1 = j ; j1 < end ; ++j1){ flag = 1 ; if(a[i1][j1] >= min(min(a[i - 1][j1] , a[i1 + 1][j1]) , min(a[i1][j - 1] , a[i1][j1 + 1]))){ end = j1 ; break; }else ans++; } } end = 0; for(int i1 = i ; i1 ; --i1){ if(!(j - end)) break; for(int j1 = j ; j1> end ; --j1){ flag = 1 ; if(i1 == i && j1 == j) continue ; // cout << min(min(a[i1 - 1][j1] , a[i + 1][j1]) // , min(a[i1][j1 - 1] , a[i1][j + 1])) << ' ' << i << ' ' << j << ' ' << i1 << ' ' << j1 << endl; if(a[i1][j1] >= min(min(a[i1 - 1][j1] , a[i + 1][j1]) , min(a[i1][j1 - 1] , a[i1][j + 1]))){ end = j1 ; break; }else ans++; } } } } return ans ; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...