Submission #293721

# Submission time Handle Problem Language Result Execution time Memory
293721 2020-09-08T10:45:51 Z egekabas Rectangles (IOI19_rect) C++14
0 / 100
27 ms 1056 KB
#include "rect.h"
#include <bits/stdc++.h>
#define all(x) (x).begin(), (x).end()
#define ff first
#define ss second
#define pb push_back
#define mp make_pair
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef pair<ll, ll> pll;
typedef pair<ull, ull> pull;
typedef pair<int, int> pii;
typedef pair<ld, ld> pld;
vector<bitset<700>> root;
struct tree{
	vector<bitset<700>> seg;
	void init(int n){
		seg.resize(4*n+5);
		for(auto &u : seg)
			u.flip();
	}	
	void upd(int v, int tl, int tr, int idx, bitset<700> &val){
		if(tl == idx && tr == idx){
			seg[v] = val;
			return;
		}
		if(idx <= (tl+tr)/2)
			upd(2*v, tl, (tl+tr)/2, idx, val);
		else
			upd(2*v+1, (tl+tr)/2+1, tr, idx, val);
		seg[v] = seg[2*v]&seg[2*v+1];
	}
	int get(int v, int tl, int tr, int val){
		if(tl == tr) return tl;
		if(seg[2*v][val] == 0)
			return get(2*v, tl, (tl+tr)/2, val);
		return get(2*v+1, (tl+tr)/2+1, tr, val);
	}
};
bitset<700> lef[700][700];
bitset<700> down[700][700];
int n, m;
long long count_rectangles(vector<std::vector<int> > a) {
	n = a.size();
	m = a[0].size();
	for(int i = 0; i < n; ++i){
		vector<pii> v;
		for(int j = m-1; j >= 0; --j){
			while(v.size()){
				lef[i][j][v.back().ss] = 1;
				if(v.back().ff > a[i][j])
					break;
				v.pop_back();
			}
			v.pb({a[i][j], j});
		}
	}
	for(int j = 0; j < m; ++j){
		vector<pii> v;
		for(int i = n-1; i >= 0; --i){
			while(v.size()){
				down[i][j][v.back().ss] = 1;
				if(v.back().ff > a[i][j])
					break;
				v.pop_back();
			}
			v.pb({a[i][j], i});	
		}
	}
	
	ll ans = 0;
	for(int i = 1; i < n-1; ++i){
		//tree s;
		//s.init(m);
		for(int j = m-1; j >= 0; --j){
			bitset<700> cur;
			cur.flip();
			for(int k = i; k < n-1; ++k){
				cur &= lef[k][j];
				//int lim = s.get(1, 0, m, k+1);
				bitset<700> oth;
				oth.flip();
				for(int fin = j+1; fin < m; ++fin){
					oth &= down[i-1][fin];
					if(fin+1 < m)
						ans += oth[k+1]&cur[fin+1];
				}

			}

			//s.upd(1, 0, m, j, down[i-1][j]);
		}

	}
	return ans;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 384 KB Output is correct
2 Correct 3 ms 768 KB Output is correct
3 Correct 3 ms 768 KB Output is correct
4 Correct 3 ms 768 KB Output is correct
5 Correct 3 ms 768 KB Output is correct
6 Correct 3 ms 768 KB Output is correct
7 Correct 1 ms 640 KB Output is correct
8 Correct 1 ms 512 KB Output is correct
9 Incorrect 3 ms 768 KB Output isn't correct
10 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 384 KB Output is correct
2 Correct 3 ms 768 KB Output is correct
3 Correct 3 ms 768 KB Output is correct
4 Correct 3 ms 768 KB Output is correct
5 Correct 3 ms 768 KB Output is correct
6 Correct 3 ms 768 KB Output is correct
7 Correct 1 ms 640 KB Output is correct
8 Correct 1 ms 512 KB Output is correct
9 Incorrect 3 ms 768 KB Output isn't correct
10 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 384 KB Output is correct
2 Correct 3 ms 768 KB Output is correct
3 Correct 3 ms 768 KB Output is correct
4 Correct 3 ms 768 KB Output is correct
5 Correct 3 ms 768 KB Output is correct
6 Correct 3 ms 768 KB Output is correct
7 Correct 1 ms 640 KB Output is correct
8 Correct 1 ms 512 KB Output is correct
9 Incorrect 3 ms 768 KB Output isn't correct
10 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 384 KB Output is correct
2 Correct 3 ms 768 KB Output is correct
3 Correct 3 ms 768 KB Output is correct
4 Correct 3 ms 768 KB Output is correct
5 Correct 3 ms 768 KB Output is correct
6 Correct 3 ms 768 KB Output is correct
7 Correct 1 ms 640 KB Output is correct
8 Correct 1 ms 512 KB Output is correct
9 Incorrect 3 ms 768 KB Output isn't correct
10 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 27 ms 1056 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 384 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 384 KB Output is correct
2 Correct 3 ms 768 KB Output is correct
3 Correct 3 ms 768 KB Output is correct
4 Correct 3 ms 768 KB Output is correct
5 Correct 3 ms 768 KB Output is correct
6 Correct 3 ms 768 KB Output is correct
7 Correct 1 ms 640 KB Output is correct
8 Correct 1 ms 512 KB Output is correct
9 Incorrect 3 ms 768 KB Output isn't correct
10 Halted 0 ms 0 KB -