제출 #348012

#제출 시각아이디문제언어결과실행 시간메모리
348012tengiz05Rectangles (IOI19_rect)C++17
37 / 100
5059 ms34028 KiB
#include "rect.h"
#ifndef EVAL
#include "grader.cpp"
#endif
#include <bits/stdc++.h>
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2,fma")
#pragma GCC optimize("O3")
using namespace std;
typedef long long ll;
int n, m;
vector<vector<int>> a;
inline bool check(int r1, int c1, int r2, int c2){
	for(int i=r1;i<=r2;i++){
		for(int j=c1;j<=c2;j++){
			int t = min(min(a[i][c1-1], a[i][c2+1]), min(a[r1-1][j], a[r2+1][j]));
			if(a[i][j] >= t)return false;
		}
	}return true;
}

//~ void print(int r1, int c1, int r2, int c2){
	//~ for(int i=r1;i<=r2;i++){
		//~ for(int j=c1;j<=c2;j++){
			//~ cout << a[i][j] << ' ';
		//~ }cout << '\n';
	//~ }cout << '\n';
//~ }

ll count_rectangles(vector<vector<int>> a){
	::a = a;
	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++){
			for(int I=i;I<n-1;I++){
				for(int J=j;J<m-1;J++){
					//~ if(check(i,j,I,J)){
						//~ cout << i << ' ' << j << "; " << I << ' ' << J << '\n';
						//~ print(i,j,I,J);
					//~ }
					ans += check(i,j,I,J);
				}
			}
		}
	}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...