QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#140219#2672. Rectanglesminhcool#10 4ms24476kbC++144.7kb2023-08-15 15:14:062024-07-04 01:44:00

Judging History

你现在查看的是最新测评结果

  • [2024-07-04 01:44:00]
  • 评测
  • 测评结果:10
  • 用时:4ms
  • 内存:24476kb
  • [2023-08-15 15:14:06]
  • 提交

answer

//#define local
#ifndef local
#include "rect.h"
#endif
#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
using namespace __gnu_pbds;
using namespace std;

#define ll long long
#define fi first
#define se second
#define pb push_back
#define mp make_pair

typedef pair<ll, ll> ii;
typedef pair<ii, ll> iii;
typedef pair<ii, ii> iiii;

const ll N = 2505 + 5;

const ll oo = 1e9 + 7, mod = 1e9 + 7;

mt19937 rng(1);

ll rnd(ll l, ll r){
	ll temp = rng() % (r - l + 1);
	return abs(temp) + l;
}

ll n, m, a[N][N];

ll mxr[N][N], mxl[N][N], mxd[N][N], mxu[N][N];

vector<ii> vc;

vector<ll> events[N];

ll minr[N], maxl[N];

ll bit[N];

void upd(ll id, ll val){
	for(; id <= m; id += id & -id) bit[id] += val;
}

ll get(ll id){
	ll ans = 0;
	for(; id; id -= id & -id) ans += bit[id];
	return ans;
}

bool vis[N][N];

int mnx, mxx, mny, mxy, tol;

void ff(int i, int j){
	if(i < 0 || j < 0 || i > n || j > m || vis[i][j] || !a[i][j]) return;
	vis[i][j] = 1;
	mnx = min(mnx, i);
	mxx = max(mxx, i);
	mny = min(mny, j);
	mxy = max(mxy, j);
	ff(i - 1, j);
	ff(i + 1, j);
	ff(i, j - 1);
	ff(i, j + 1);
}

ll count_rectangles(vector<vector<int>> arr){
	n = arr.size(), m = arr[0].size();
	for(ll i = 0; i < n; i++){
		for(ll j = 0; j < m; j++) a[i][j] = arr[i][j];
	}
	bool ck = 1;
	for(int i = 0; i < n; i++){
		for(int j = 0; j < m; j++) ck &= (a[i][j] <= 1);
	}
	if(ck){
		//cout << "OK\n";
		ll answer = 0;
		for(int i = 1; i < (n - 1); i++){
			for(int j = 1; j < (m - 1); j++){
				if(vis[i][j] || !a[i][j]) continue;
				mnx = mny = oo, mxx = mxy = -oo;
				tol = 0;
				ff(i, j);
				if(!mnx || !mny || mxx == (n - 1) || mxy == (m - 1)) continue;
				if((mxx - mnx + 1) * (mxy - mny + 1) != tol) continue;
				answer++;
			}
		}
		return answer;
	}
	for(ll i = 0; i < n; i++){
		stack<ll> stk;
		stk.push(-1);
		for(ll j = 0; j < m; j++){
			while(stk.top() >= 0 && a[i][stk.top()] < a[i][j]) stk.pop();
			mxl[i][j] = stk.top() + 1;
			stk.push(j);
		}
	}
	for(ll i = 0; i < n; i++){
		stack<ll> stk;
		stk.push(-1);
		for(ll j = 0; j < m; j++){
			while(stk.top() >= 0 && a[i][stk.top()] < a[i][j]) stk.pop();
			mxl[i][j] = stk.top() + 1;
			stk.push(j);
		}
	}
	for(ll i = 0; i < n; i++){
		stack<ll> stk;
		stk.push(m);
		for(ll j = m - 1; j >= 0; j--){
			while(stk.top() < m && a[i][stk.top()] < a[i][j]) stk.pop();
			mxr[i][j] = stk.top() - 1;
			stk.push(j);
		}
	}
	for(ll i = 0; i < m; i++){
		stack<ll> stk;
		stk.push(-1);
		for(ll j = 0; j < n; j++){
			while(stk.top() >= 0 && a[stk.top()][i] < a[j][i]) stk.pop();
			mxu[j][i] = stk.top() + 1;
			stk.push(j);
		}
	}
	for(ll i = 0; i < m; i++){
		stack<ll> stk;
		stk.push(n);
		for(ll j = n - 1; j >= 0; j--){
			while(stk.top() < n && a[stk.top()][i] < a[j][i]) stk.pop();
			mxd[j][i] = stk.top() - 1;
			stk.push(j);
		}
	}
	for(ll i = 0; i < n; i++){
		//for(ll j = 0; j < m; j++) cout << i << " " << j << " " << mxr[i][j] << " " << mxl[i][j] << " " << mxu[i][j] << " " << mxd[i][j] << "\n";
	}
	ll answer = 0;
	for(ll i = 0; i < n; i++){
		for(ll j = 0; j < m; j++){
			minr[j] = oo, maxl[j] = -oo;
		}
		for(ll j = i + 2; j < n; j++){
			for(ll k = 0; k < m; k++){
				minr[k] = min(minr[k], mxr[j - 1][k]);
				maxl[k] = max(maxl[k], mxl[j - 1][k]);
			}
			vc.clear();
			ll lst = -oo;
			for(ll k = 1; k < m; k++){
				if(mxd[i][k] >= j - 1 && mxu[j][k] <= i + 1 && k < (m - 1)){
					if(lst == -oo) lst = k;
				}
				else{
					if(lst >= 0) vc.pb({lst, k - 1});
					lst = -oo;
				}
			}
			for(ll k = 0; k <= m; k++){
				events[k].clear();
				bit[k] = 0;
			}
			for(auto it : vc){
				//cout << i << " " << j << " " << it.fi << " " << it.se << "\n";
				//cout << minr[it.fi - 1] << " " << maxl[it.fi + 1] << "\n";
				//for(ll k = it.fi - 1; k < it.se; k++) events[min(it.se, minr[k]) + 1];
				for(ll k = it.fi; k <= it.se; k++){
					upd(k, 1);
					events[min(it.se, minr[k - 1]) + 1].pb(k);
					for(auto it : events[k]) upd(it, -1);
					//cout << maxl[k + 1] << " " << 
					answer += get(m) - get(max(it.fi - 1, maxl[k + 1] - 1));
					//cout << min(it.se - 1, minr[k - 1]) + 1 << " " << maxl[k + 1] << "\n";
				}
				//cout << answer << "\n";
			}
		}
	}
	return answer;
}

#ifdef local
void process(){
	ll n, m;
	cin >> n >> m;
	vector<vector<int>> board;
	board.resize(n);
	for(ll i = 0; i < n; i++) board[i].resize(m);
	for(ll i = 0; i < n; i++){
		for(ll j = 0; j < m; j++) cin >> board[i][j];
	}
	cout << count_rectangles(board) << "\n";
}

signed main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	freopen("kek.inp", "r", stdin);
	freopen("kek.out", "w", stdout);
	process();
}
#endif

详细

Subtask #1:

score: 0
Wrong Answer

Test #1:

score: 8
Accepted
time: 0ms
memory: 18428kb

input:

8d9a74d5-4c4b-4437-9c49-114beaeb8f1a
30 30
3996 3689 3664 3657 3646 3630 3621 3619 3609 3604 3601 3598 3584 3581 3574 3561 3554 3543 3537 3531 3522 3519 3505 3500 3498 3492 3476 3467 3460 3994
3993 3458 3451 3440 3431 3420 3395 3346 3333 3282 3268 3261 3241 3204 3168 3121 3103 3083 3076 2923 2872 28...

output:

907404fa-efbb-4a2c-83b8-4c377409c80c
OK
784

result:

ok 3 lines

Test #2:

score: 0
Accepted
time: 0ms
memory: 24216kb

input:

8d9a74d5-4c4b-4437-9c49-114beaeb8f1a
30 30
6996495 6421812 6403903 6382663 6362922 6334993 6329757 6315983 6278578 6262778 6254104 6244987 6232172 6226987 6194797 6176457 6167900 6140865 6123884 6116295 6101556 6079188 6068604 6049308 6034911 6034041 6015464 6004614 5992300 6995512
6987555 5978527 5...

output:

907404fa-efbb-4a2c-83b8-4c377409c80c
OK
784

result:

ok 3 lines

Test #3:

score: 0
Accepted
time: 0ms
memory: 20116kb

input:

8d9a74d5-4c4b-4437-9c49-114beaeb8f1a
30 30
12330 11301 11283 11257 11240 11194 11170 11135 11116 11095 11085 11048 11000 10972 10914 10909 10897 10877 10835 10823 10789 10781 10769 10745 10708 10690 10665 10661 10645 12329
12326 10635 10633 10590 10557 10542 10513 10491 10418 10406 10096 10086 9930 ...

output:

907404fa-efbb-4a2c-83b8-4c377409c80c
OK
784

result:

ok 3 lines

Test #4:

score: 0
Accepted
time: 1ms
memory: 7824kb

input:

8d9a74d5-4c4b-4437-9c49-114beaeb8f1a
30 30
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0...

output:

907404fa-efbb-4a2c-83b8-4c377409c80c
OK
0

result:

ok 3 lines

Test #5:

score: 0
Accepted
time: 0ms
memory: 24476kb

input:

8d9a74d5-4c4b-4437-9c49-114beaeb8f1a
30 30
1023589 2780022 3479561 3782160 3952727 450470 3945264 2170843 3225056 1786041 1389306 1419234 3915988 520009 1251948 104723 1856504 3637799 1807024 2170722 2803041 2964655 2003819 1048641 3939016 2826494 3085605 1000286 3022731 1498648
3779781 3073573 7294...

output:

907404fa-efbb-4a2c-83b8-4c377409c80c
OK
268

result:

ok 3 lines

Test #6:

score: 0
Accepted
time: 0ms
memory: 22224kb

input:

8d9a74d5-4c4b-4437-9c49-114beaeb8f1a
30 13
2314857 2951714 2551799 1262649 877317 2582030 1583139 3582015 1970170 2496877 252584 1959948 809239
1363336 486953 3562759 2227001 1996347 1994014 2317663 3232136 648728 2110306 2235717 2759784 2530855
258050 2824581 1243255 3198783 565865 231889 3727287 8...

output:

907404fa-efbb-4a2c-83b8-4c377409c80c
OK
112

result:

ok 3 lines

Test #7:

score: 0
Accepted
time: 0ms
memory: 14256kb

input:

8d9a74d5-4c4b-4437-9c49-114beaeb8f1a
12 30
1713490 434279 757758 2071347 3203350 423584 3882119 3134239 1954599 1689833 1956535 3906809 3531554 3887373 3954136 2363040 3764367 1582213 271999 3004358 1532278 1181001 435806 2138704 2615171 1339870 717957 1485488 3841400 1190729
2110431 3716435 2650629...

output:

907404fa-efbb-4a2c-83b8-4c377409c80c
OK
87

result:

ok 3 lines

Test #8:

score: 0
Accepted
time: 0ms
memory: 24308kb

input:

8d9a74d5-4c4b-4437-9c49-114beaeb8f1a
30 30
9 2 6 6 9 5 7 6 4 4 4 4 0 1 7 3 8 0 6 4 8 1 5 2 2 9 9 9 9 8
5 4 0 7 2 3 7 8 4 10 0 9 3 8 5 1 3 9 6 2 4 2 5 2 7 5 10 6 9 5
10 9 7 9 3 3 8 1 3 3 8 10 0 6 1 1 7 8 10 0 8 1 4 5 9 4 2 9 5 0
3 10 10 0 4 5 1 2 6 10 2 8 8 9 10 2 2 8 2 3 3 10 0 2 7 0 7 9 10 6
3 3 4 ...

output:

907404fa-efbb-4a2c-83b8-4c377409c80c
OK
189

result:

ok 3 lines

Test #9:

score: 0
Accepted
time: 3ms
memory: 16380kb

input:

8d9a74d5-4c4b-4437-9c49-114beaeb8f1a
30 30
89 58 32 43 76 79 48 2 31 26 51 12 17 19 93 0 37 54 100 76 73 46 38 46 34 47 99 97 42 20
55 14 72 28 25 79 37 28 30 13 42 94 45 29 90 92 5 5 100 46 65 26 57 75 68 49 99 97 34 41
86 3 38 4 33 40 49 35 13 62 62 36 92 84 7 24 0 51 100 89 57 77 63 12 39 37 99 9...

output:

907404fa-efbb-4a2c-83b8-4c377409c80c
OK
235

result:

ok 3 lines

Test #10:

score: 0
Accepted
time: 0ms
memory: 13972kb

input:

8d9a74d5-4c4b-4437-9c49-114beaeb8f1a
30 30
1915 533 904 1917 459 602 1419 963 1587 1715 886 1351 1406 1775 1170 909 543 289 616 717 623 531 1022 1245 390 1654 23 693 539 1488
1875 743 1220 224 459 1300 755 1009 195 228 1988 103 1312 1601 1314 482 621 1919 107 1637 1477 1852 482 1402 564 986 1085 326...

output:

907404fa-efbb-4a2c-83b8-4c377409c80c
OK
251

result:

ok 3 lines

Test #11:

score: 0
Accepted
time: 0ms
memory: 14340kb

input:

8d9a74d5-4c4b-4437-9c49-114beaeb8f1a
30 30
1791839 3171005 126890 3999980 1870566 19865 2616736 3287382 281079 3380697 2820606 938251 3689860 2904336 50801 2365719 280362 2693770 3999972 3571330 249259 256875 3812828 408564 2317613 3654534 2735648 3307878 3264923 2800617
3855911 2226794 1132955 3999...

output:

907404fa-efbb-4a2c-83b8-4c377409c80c
OK
245

result:

ok 3 lines

Test #12:

score: 0
Accepted
time: 0ms
memory: 8108kb

input:

8d9a74d5-4c4b-4437-9c49-114beaeb8f1a
1 1
1

output:

907404fa-efbb-4a2c-83b8-4c377409c80c
OK
0

result:

ok 3 lines

Test #13:

score: 0
Accepted
time: 2ms
memory: 7828kb

input:

8d9a74d5-4c4b-4437-9c49-114beaeb8f1a
1 5
0 0 0 1 0

output:

907404fa-efbb-4a2c-83b8-4c377409c80c
OK
0

result:

ok 3 lines

Test #14:

score: -8
Wrong Answer
time: 0ms
memory: 10196kb

input:

8d9a74d5-4c4b-4437-9c49-114beaeb8f1a
30 30
0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1
0 1 0 0 1 1 1 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 1 0 0 1 1 1 1
0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 0 0 0 0 0 1 1 1 0 0
0 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 0 0 1 0 1 0 1 0 0 0 0 0 0 1
1 0 1 0 0 1 0 0 1...

output:

907404fa-efbb-4a2c-83b8-4c377409c80c
OK
0

result:

wrong answer 3rd lines differ - expected: '22', found: '0'

Subtask #2:

score: 0
Skipped

Dependency #1:

0%

Subtask #3:

score: 0
Skipped

Dependency #2:

0%

Subtask #4:

score: 0
Skipped

Dependency #3:

0%

Subtask #5:

score: 10
Accepted

Test #53:

score: 10
Accepted
time: 3ms
memory: 14144kb

input:

8d9a74d5-4c4b-4437-9c49-114beaeb8f1a
3 2500
3999533 3994407 3992243 3991052 3990430 3988819 3987546 3985557 3983808 3983398 3982565 3981632 3981437 3979888 3979428 3978697 3978033 3975044 3973166 3972565 3971499 3970538 3969576 3969014 3968513 3968337 3966950 3965168 3964140 3963957 3962080 3961829 ...

output:

907404fa-efbb-4a2c-83b8-4c377409c80c
OK
2498

result:

ok 3 lines

Test #54:

score: 0
Accepted
time: 4ms
memory: 14176kb

input:

8d9a74d5-4c4b-4437-9c49-114beaeb8f1a
3 2123
3999178 3994918 3993586 3990671 3989261 3988091 3985537 3984649 3983635 3982639 3981319 3980647 3979462 3978557 3977387 3976784 3975890 3975694 3975367 3975193 3973331 3971593 3970332 3969892 3968052 3967213 3966031 3963229 3963001 3962625 3961725 3959892 ...

output:

907404fa-efbb-4a2c-83b8-4c377409c80c
OK
2121

result:

ok 3 lines

Test #55:

score: 0
Accepted
time: 1ms
memory: 7992kb

input:

8d9a74d5-4c4b-4437-9c49-114beaeb8f1a
3 2500
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

output:

907404fa-efbb-4a2c-83b8-4c377409c80c
OK
0

result:

ok 3 lines

Test #56:

score: 0
Accepted
time: 0ms
memory: 14044kb

input:

8d9a74d5-4c4b-4437-9c49-114beaeb8f1a
3 1
2
0
3

output:

907404fa-efbb-4a2c-83b8-4c377409c80c
OK
0

result:

ok 3 lines

Test #57:

score: 0
Accepted
time: 0ms
memory: 16220kb

input:

8d9a74d5-4c4b-4437-9c49-114beaeb8f1a
3 2500
3073920 3547280 2578996 515881 1457637 3747191 3335718 1093356 188596 2501359 1707005 923685 1254329 1274578 2451887 1948214 3495100 706306 2036295 3924470 2870740 2253399 2559834 2223853 3524040 448754 2838433 2573451 1627516 2712253 1015735 1941089 29861...

output:

907404fa-efbb-4a2c-83b8-4c377409c80c
OK
688

result:

ok 3 lines

Test #58:

score: 0
Accepted
time: 0ms
memory: 14052kb

input:

8d9a74d5-4c4b-4437-9c49-114beaeb8f1a
3 2500
956507 3801894 3199483 6585310 812126 2818592 2669408 5464237 4252596 1952833 4693677 3365605 4499904 3386900 1960432 4511461 1338880 1430060 3156994 1847807 4802896 5992027 1936374 4766951 4759230 1548846 5592000 759863 3462998 1783861 3893700 6928854 230...

output:

907404fa-efbb-4a2c-83b8-4c377409c80c
OK
673

result:

ok 3 lines

Test #59:

score: 0
Accepted
time: 0ms
memory: 14056kb

input:

8d9a74d5-4c4b-4437-9c49-114beaeb8f1a
3 2500
3899265 2127060 3179336 385518 1777334 2221597 3486817 3371389 1125733 5183809 1203885 1131986 4091262 2101525 4748156 5376347 3256434 4789253 5407807 4461288 2494895 5504801 1781825 190092 1642923 521237 3800202 3385087 3828441 866970 3681590 2845515 1332...

output:

907404fa-efbb-4a2c-83b8-4c377409c80c
OK
629

result:

ok 3 lines

Test #60:

score: 0
Accepted
time: 3ms
memory: 16144kb

input:

8d9a74d5-4c4b-4437-9c49-114beaeb8f1a
3 2500
6827 6690 2935 1032 6925 397 4509 8004 5927 6743 4358 7902 7239 2939 3693 2834 6940 9870 6120 3250 4561 8813 6907 7907 8918 3466 1111 8172 6164 9779 9145 3560 3853 374 8950 6716 4712 8587 6446 1731 9977 8936 5617 8149 4600 4532 5069 3980 9322 4496 6908 962...

output:

907404fa-efbb-4a2c-83b8-4c377409c80c
OK
608

result:

ok 3 lines

Test #61:

score: 0
Accepted
time: 0ms
memory: 14160kb

input:

8d9a74d5-4c4b-4437-9c49-114beaeb8f1a
3 2500
2237965 687445 2621922 3980698 3999973 3999983 2453251 2559651 3489050 2633538 3497108 1214996 2020667 2462216 3555293 2124809 3999991 1864244 19304 1786392 1858083 3169698 3261730 2667102 224139 3999993 240880 1399521 3999964 1558547 1172796 912200 133841...

output:

907404fa-efbb-4a2c-83b8-4c377409c80c
OK
569

result:

ok 3 lines

Test #62:

score: 0
Accepted
time: 0ms
memory: 14064kb

input:

8d9a74d5-4c4b-4437-9c49-114beaeb8f1a
1 2500
3699216 130643 5033835 3805008 5074061 2048959 419051 5514783 5194748 2315570 3718514 1399587 4434175 444483 4700750 6507677 5711722 5828756 6567765 1582528 448735 810518 2747305 1045101 5026202 6216297 5563213 242266 6659948 1973694 4883635 756283 3822988...

output:

907404fa-efbb-4a2c-83b8-4c377409c80c
OK
0

result:

ok 3 lines

Test #63:

score: 0
Accepted
time: 0ms
memory: 14036kb

input:

8d9a74d5-4c4b-4437-9c49-114beaeb8f1a
2 2500
780862 477136 161842 568524 652912 264613 415417 59634 436067 1067956 882087 158951 80968 69382 754204 150303 548432 610319 731231 84272 583452 143105 699314 491045 617561 970063 670786 557308 134628 865642 331432 233825 742850 81239 198370 575889 302003 7...

output:

907404fa-efbb-4a2c-83b8-4c377409c80c
OK
0

result:

ok 3 lines

Subtask #6:

score: 0
Wrong Answer

Test #64:

score: 0
Wrong Answer
time: 2ms
memory: 9924kb

input:

8d9a74d5-4c4b-4437-9c49-114beaeb8f1a
10 10
1 1 0 0 1 0 0 1 0 0
0 1 0 0 1 0 0 1 1 0
0 1 0 0 0 0 0 1 1 0
1 0 0 0 1 0 0 0 1 1
1 0 1 1 0 0 1 1 0 1
0 0 1 0 0 0 1 1 0 0
1 0 1 1 1 1 1 1 1 0
1 0 0 0 1 1 1 1 0 0
1 0 0 1 1 0 1 0 1 1
0 0 0 0 0 1 0 1 1 0

output:

907404fa-efbb-4a2c-83b8-4c377409c80c
OK
0

result:

wrong answer 3rd lines differ - expected: '2', found: '0'

Subtask #7:

score: 0
Skipped

Dependency #1:

0%