답안 #425347

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
425347 2021-06-12T23:22:11 Z Monchito 자리 배치 (IOI18_seats) C++14
5 / 100
4000 ms 35880 KB
#include "seats.h"
#include <iostream>
using namespace std;

const int MAXN = 1e3;

int grid[MAXN][MAXN], N, M;

void give_initial_chart(int H, int W, vector<int> R, vector<int> C) {
	int cnt=0;
	N = H; M = W;

	for(int i=0; i<H*W; i++) {
		grid[R[i]][C[i]] = cnt;
		cnt++;	
	}
}

void find_position(pair<int,int>& p1, pair<int,int>& p2, int a, int b) {
	bool flag=false;

	for(int i=0; i<N; i++) {
		for(int j=0; j<M; j++) {
			if(grid[i][j] == a) {
				if(!flag) { p1 = { i, j}; flag = true; }
				else p2 = { i, j };
			} 
			
			else if(grid[i][j] == b) {
				if(!flag) { p1 = { i, j}; flag = true; }
				else p2 = { i, j };
			}
		}	
	}
}

bool can(int r1, int r2, int c1, int c2, int k) {
	for(int i=r1; i<=r2; i++) {
		for(int j=c1; j<=c2; j++) {
			if(grid[i][j] >= k) return false;	
		}
	}

	/*
	for(int i=r1; i<=r2; i++) {
		for(int j=c1; j<=c2; j++) 
			cout << grid[i][j] << " ";

		cout << "\n";
	}
	*/

	return true;
}

void print(){
	for(int i=0; i<N; i++) {
		for(int j=0; j<M; j++)
			cout << grid[i][j] << " ";

		cout << "\n";
	}
}

int swap_seats(int a, int b) {
	pair<int,int> p1, p2;
	find_position(p1, p2, a, b);

	swap(grid[p1.first][p1.second], grid[p2.first][p2.second]);

	int ret=0;

	for(int r1=0; r1<N; r1++) {
		for(int r2=r1; r2 < N; r2++) {
			for(int c1=0; c1 < M; c1++) {
				for(int c2=c1; c2 < M; c2++) {
					int k = (r2-r1+1) * (c2-c1+1);
					if(can(r1, r2, c1, c2, k)){
						ret++;
					}
				}
			}	
		}	
	}

	return ret;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 460 KB Output is correct
2 Correct 10 ms 440 KB Output is correct
3 Correct 46 ms 452 KB Output is correct
4 Correct 65 ms 396 KB Output is correct
5 Correct 986 ms 928 KB Output is correct
6 Correct 45 ms 456 KB Output is correct
7 Correct 45 ms 416 KB Output is correct
8 Correct 74 ms 424 KB Output is correct
9 Correct 141 ms 464 KB Output is correct
10 Correct 51 ms 580 KB Output is correct
11 Correct 67 ms 596 KB Output is correct
12 Correct 44 ms 452 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 460 KB Output is correct
2 Correct 10 ms 440 KB Output is correct
3 Correct 46 ms 452 KB Output is correct
4 Correct 65 ms 396 KB Output is correct
5 Correct 986 ms 928 KB Output is correct
6 Correct 45 ms 456 KB Output is correct
7 Correct 45 ms 416 KB Output is correct
8 Correct 74 ms 424 KB Output is correct
9 Correct 141 ms 464 KB Output is correct
10 Correct 51 ms 580 KB Output is correct
11 Correct 67 ms 596 KB Output is correct
12 Correct 44 ms 452 KB Output is correct
13 Execution timed out 4075 ms 972 KB Time limit exceeded
14 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 4033 ms 35880 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 4094 ms 972 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 20 ms 1988 KB Output is correct
2 Correct 37 ms 1980 KB Output is correct
3 Correct 427 ms 2016 KB Output is correct
4 Execution timed out 4064 ms 1356 KB Time limit exceeded
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 460 KB Output is correct
2 Correct 10 ms 440 KB Output is correct
3 Correct 46 ms 452 KB Output is correct
4 Correct 65 ms 396 KB Output is correct
5 Correct 986 ms 928 KB Output is correct
6 Correct 45 ms 456 KB Output is correct
7 Correct 45 ms 416 KB Output is correct
8 Correct 74 ms 424 KB Output is correct
9 Correct 141 ms 464 KB Output is correct
10 Correct 51 ms 580 KB Output is correct
11 Correct 67 ms 596 KB Output is correct
12 Correct 44 ms 452 KB Output is correct
13 Execution timed out 4075 ms 972 KB Time limit exceeded
14 Halted 0 ms 0 KB -