![[백준 6549번] 히스토그램에서 가장 큰 직사각형](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbGhO8k%2Fbtszi7SXCIU%2FAAAAAAAAAAAAAAAAAAAAAINfm4V5XBEqMxM9pCmd2ajYmUeHDZKqelmtMirJn7L8%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3D7XMHPDt41%252BZUt3NCSh124vjf880%253D)
https://www.acmicpc.net/problem/6549 6549번: 히스토그램에서 가장 큰 직사각형 입력은 테스트 케이스 여러 개로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, 직사각형의 수 n이 가장 처음으로 주어진다. (1 ≤ n ≤ 100,000) 그 다음 n개의 정수 h1, ..., hn (0 ≤ hi ≤ www.acmicpc.net #define F first #define S second #include #include using namespace std; stack sta; int main(void) { cin.tie(0); ios_base::sync_with_stdio(NULL); long long int max, s, h; int n; while (1) { ci..
![[백준 14601] 샤워실 바닥 깔기 (Large)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FsxrUy%2FbtszcHNCqaW%2FAAAAAAAAAAAAAAAAAAAAAPfc4PWPlm8F-D8BQJj6HeBOBots7oOJZpuXn-bzJLlc%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DUJU8sHnYXenIQv9hQwPzsixIu6w%253D)
1. 문제 https://www.acmicpc.net/problem/14601 14601번: 샤워실 바닥 깔기 (Large) 첫 번째 줄에는 바닥의 한 변의 길이를 표현하는 자연수 K(1 ≤ K ≤ 7) 가 주어진다. 이때 바닥의 크기는 2K 가 됨에 유의하라. 두 번째 줄에는 배수구의 위치를 나타내는 자연수 x, y (1 ≤ x, y ≤ 2K) www.acmicpc.net #include using namespace std; int num; int map[128][128]; bool check(int x1, int y1, int x2, int y2) { for (int i = x1; i < x2; i++) { for (int j = y1; j < y2; j++) { if (map[i - 1][j - 1..
/************************************************* 짝수번: A x A x A x A = (A x A) x (A x A) 홀수번: A x A x A x A x A = (A x A) x (A x A) x A *************************************************/ #include using namespace std; long long int dc(int a, int b, int c) { if (b == 1) return a % c;//base condition: A의 1승 if (b % 2) return dc(a, b / 2, c) * dc(a, b / 2, c) % c * a % c; else return dc(a, b / 2, c..
![[백준 14600번] 샤워실 바닥 갈기 (Small) (C++)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fd9kbU1%2Fbtszcp532ZU%2FAAAAAAAAAAAAAAAAAAAAAG2pFhaLc__4Ay8vM1rG-0Z9MFew5CVS7Bm8CXbme2jY%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3D7O33PQkL2Lf47BJpadM9tnFvQo8%253D)
#include using namespace std; int num; int map[4][4]; bool check(int x1, int y1, int x2, int y2) { for (int i = x1; i > m >> n; map[m-1][n-1] = -1; int siz = (1 = 0; i--, cout
https://www.acmicpc.net/blog/view/128 [C++] tie 와 sync_with_stdio 머릿말 C++ 프로그램을 작성할 때 main 함수에 다음과 같은 문장을 쓰면 속도가 빨라진다고 알고 있는 사람이 많을 겁니다. int main() { cin.tie(nullptr); ios_base::sync_with_stdio(false); /* 실제 프로그램 */ } www.acmicpc.net
![[백준 9920번] image (C++)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FemtxwX%2FbtsyTutSZEN%2FAAAAAAAAAAAAAAAAAAAAAG2gwp0LvVV0leouLJvFOzlM31U1SjJfoDVrMcRBhfBT%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DThdspemEsQWx14ObSoEITr%252Bynvk%253D)
//white: 0, black: 1 #define SIZE 64 #include using namespace std; int dat; int cnt; int map[SIZE][SIZE]; // change - true, not change - false bool check(int x1, int y1, int x2, int y2) { dat = map[x1][y1]; for (int i = x1; i < x2; i++) { for (int j = y1; j < y2; j++) { if (dat != map[i][j]) return true; } } return false; } int dc(int size, int x, int y) { if (size == 1) return 2; if (!check(x, ..
![[백준 10830번] 행렬 제곱 (C++)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbrOASj%2FbtsyU9a4KFZ%2FAAAAAAAAAAAAAAAAAAAAAHvNbyYklVNovPFzy0OKZVYdVb8rhfZDgbrOwpUcv--Y%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DPds3xnXY5CHSqyIgwsTR3aHR3Uw%253D)
![[백준 1780번] 종이의 개수 (C++)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FDR0q7%2FbtsyV1cLLWG%2FAAAAAAAAAAAAAAAAAAAAADlmo8WeSa1X9gv2rCI8Y3kT9dQohy2I8QI1dAYQaht1%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DhQ1qBZexKa%252Fs%252F6XrPhCvNIDu3Yw%253D)
//white: 0, black: 1 #define SIZE 2187 #include #include #include using namespace std; int dat; // -1, 0, 1 int cnt[3]; // -1: 0, 0: 1, 1: 2 int map[SIZE][SIZE]; // change - true, not change - false bool check(int x1, int y1, int x2, int y2) { dat = map[x1][y1]; for (int i = x1; i < x2; i++) { for (int j = y1; j < y2; j++) { if (dat != map[i][j]) return true; } } return false; } void dc(int size..