답안 #829280

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
829280 2023-08-18T08:06:45 Z tranxuanbach 자리 배치 (IOI18_seats) C++17
17 / 100
4000 ms 110156 KB
#include "seats.h"

#include <bits/stdc++.h>
using namespace std;

constexpr int inf = 1e9 + 7;

struct bounding_rectangle{
	int lx = inf, rx = -inf, ly = inf, ry = -inf;

	void insert(int x, int y){
		lx = min(lx, x);
		rx = max(rx, x);
		ly = min(ly, y);
		ry = max(ry, y);
	}

	int area(){
		return (rx - lx + 1) * (ry - ly + 1);
	}
};

int n, m;
vector <vector <int>> a;

vector <pair <int, int>> pos;

int ans;
vector <bounding_rectangle> b;

void give_initial_chart(int _n, int _m, vector <int> _r, vector <int> _c){
	n = _n;
	m = _m;
	a.assign(n, vector <int>(m));
	pos.resize(n * m);
	for (int val = 0; val < n * m; val++){
		int x = _r[val], y = _c[val];
		a[x][y] = val;
		pos[val] = pair{x, y};
	}

	ans = 0;
	b.resize(n * m + 1);
	for (int val = 0; val < n * m; val++){
		b[val + 1] = b[val];
		b[val + 1].insert(pos[val].first, pos[val].second);
		if (b[val + 1].area() == val + 1){
			ans++;
		}
	}
}

int swap_seats(int val1, int val2){
	if (val1 > val2){
		swap(val1, val2);
	}
	{
		auto [x1, y1] = pos[val1];
		auto [x2, y2] = pos[val2];
		swap(a[x1][y1], a[x2][y2]);
		swap(pos[val1], pos[val2]);
	}
	for (int val = val1; val < val2; val++){
		if (b[val + 1].area() == val + 1){
			ans--;
		}
		b[val + 1] = b[val];
		b[val + 1].insert(pos[val].first, pos[val].second);
		if (b[val + 1].area() == val + 1){
			ans++;
		}
	}
	return ans;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 468 KB Output is correct
2 Correct 2 ms 396 KB Output is correct
3 Correct 3 ms 468 KB Output is correct
4 Correct 3 ms 428 KB Output is correct
5 Correct 3 ms 468 KB Output is correct
6 Correct 3 ms 468 KB Output is correct
7 Correct 3 ms 468 KB Output is correct
8 Correct 3 ms 468 KB Output is correct
9 Correct 3 ms 468 KB Output is correct
10 Correct 3 ms 468 KB Output is correct
11 Correct 3 ms 468 KB Output is correct
12 Correct 3 ms 444 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 468 KB Output is correct
2 Correct 2 ms 396 KB Output is correct
3 Correct 3 ms 468 KB Output is correct
4 Correct 3 ms 428 KB Output is correct
5 Correct 3 ms 468 KB Output is correct
6 Correct 3 ms 468 KB Output is correct
7 Correct 3 ms 468 KB Output is correct
8 Correct 3 ms 468 KB Output is correct
9 Correct 3 ms 468 KB Output is correct
10 Correct 3 ms 468 KB Output is correct
11 Correct 3 ms 468 KB Output is correct
12 Correct 3 ms 444 KB Output is correct
13 Correct 177 ms 972 KB Output is correct
14 Correct 177 ms 960 KB Output is correct
15 Correct 175 ms 984 KB Output is correct
16 Correct 174 ms 1452 KB Output is correct
17 Correct 173 ms 972 KB Output is correct
18 Correct 173 ms 952 KB Output is correct
19 Correct 174 ms 980 KB Output is correct
20 Correct 175 ms 1176 KB Output is correct
21 Correct 172 ms 980 KB Output is correct
22 Correct 175 ms 1456 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 4059 ms 59340 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 260 ms 952 KB Output is correct
2 Correct 275 ms 5476 KB Output is correct
3 Correct 438 ms 59308 KB Output is correct
4 Correct 446 ms 59312 KB Output is correct
5 Correct 438 ms 59372 KB Output is correct
6 Correct 519 ms 110156 KB Output is correct
7 Correct 441 ms 59292 KB Output is correct
8 Correct 441 ms 59304 KB Output is correct
9 Correct 445 ms 59724 KB Output is correct
10 Correct 456 ms 62380 KB Output is correct
11 Correct 462 ms 82752 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 12 ms 2000 KB Output is correct
2 Correct 13 ms 1956 KB Output is correct
3 Correct 29 ms 1960 KB Output is correct
4 Correct 183 ms 2040 KB Output is correct
5 Correct 1725 ms 2520 KB Output is correct
6 Execution timed out 4088 ms 60300 KB Time limit exceeded
7 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 468 KB Output is correct
2 Correct 2 ms 396 KB Output is correct
3 Correct 3 ms 468 KB Output is correct
4 Correct 3 ms 428 KB Output is correct
5 Correct 3 ms 468 KB Output is correct
6 Correct 3 ms 468 KB Output is correct
7 Correct 3 ms 468 KB Output is correct
8 Correct 3 ms 468 KB Output is correct
9 Correct 3 ms 468 KB Output is correct
10 Correct 3 ms 468 KB Output is correct
11 Correct 3 ms 468 KB Output is correct
12 Correct 3 ms 444 KB Output is correct
13 Correct 177 ms 972 KB Output is correct
14 Correct 177 ms 960 KB Output is correct
15 Correct 175 ms 984 KB Output is correct
16 Correct 174 ms 1452 KB Output is correct
17 Correct 173 ms 972 KB Output is correct
18 Correct 173 ms 952 KB Output is correct
19 Correct 174 ms 980 KB Output is correct
20 Correct 175 ms 1176 KB Output is correct
21 Correct 172 ms 980 KB Output is correct
22 Correct 175 ms 1456 KB Output is correct
23 Execution timed out 4059 ms 59340 KB Time limit exceeded
24 Halted 0 ms 0 KB -