제출 #1179275

#제출 시각아이디문제언어결과실행 시간메모리
1179275Gr1senRectangles (IOI19_rect)C++20
0 / 100
0 ms328 KiB
#include "rect.h"
#include<iostream>
#include<vector>
#include<algorithm>
#include<iomanip>

using namespace std;

#define ll long long
#define vi vector<int>
#define vvi vector<vi>

ll count_rectangles(vector<vector<int>> B) {
	//cerr << "oink" << endl;
	if (B.size() <= 2 || B[0].size() <= 2) return 0;
	ll t = 0;
	vi L;
	for (int i = 0; i < B[0].size()-1; i++) {
		if (B[0][i] <= B[1][i] || B[2][i] <= B[1][i]) {
			L = {B[1][i]};
			continue;
		}
		while (L.size() && B[1][i] >= L.back()) L.pop_back();
		if (B[1][i+1] <= B[1][i]) {
			L.push_back(B[1][i]);
			continue;
		}
		auto a = lower_bound(L.rbegin(), L.rend(), B[1][i+1]);
		if (L.size()) t += distance(L.rbegin(), a) + 1;
		//cerr << distance(L.begin(), L.begin()) << " " << distance(L.begin(), L.end()) << endl;
		/*
		cerr << "new t : " << t << ", i : " << i << endl;
		cerr << "L : {";
		for (auto i : L) {
			cerr << i << ", ";
		}
		cerr << "}" << endl; //*/
		L.push_back(B[1][i]);
	}
	return t;
}
#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...