목록전체 글 (601)
sm 기술 블로그
from collections import deque import sys input = sys.stdin.readline while True: h = list(map(int, input().split())) n = h.pop(0) if n == 0: break stack = [] result = 0 for i in range(n): while len(stack) != 0 and h[stack[-1]] > h[i]: tmp = stack.pop() if len(stack) == 0: w = i else: w = i - stack[-1] - 1 result = max(result, w * h[tmp]) stack.append(i) while len(stack) != 0: tmp = stack.pop() if..
import java.util.*; import java.io.*; class Main { static int p = 1000000007; public static void main(String[] args) { Scanner sc = new Scanner(System.in); long N = sc.nextLong(); long[][] first = { { 1, 1 }, { 1, 0 } }; System.out.println(pow(first, N)[0][1]); } private static long[][] pow(long[][] A, long B) { if (B == 1) { int l = A.length; for (int i = 0; i < l; i++) { for (int j = 0; j < l;..
import sys input = sys.stdin.readline n = int(input()) p = 1000000007 def MatrixMul(A, B): l = len(A) C = [[0]*l for _ in range(l)] for i in range(l): for j in range(l): for k in range(l): C[i][j] += A[i][k] * B[k][j] remainder(C) return C def remainder(A): l = len(A) for i in range(l): for j in range(l): A[i][j] %= p def pow(A, B): if B == 1: remainder(A) return A tmp = pow(A, B//2) if B % 2 ==..
import java.util.*; import java.io.*; class Main { static int N; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); String[] tmp1 = br.readLine().split(" "); N = Integer.parseInt(tmp1[0]); long B = Long.parseLong(tmp1[1]); long[][] A = new long[N][N]; for (int i = 0; i < N; ..