Submission #84113

#TimeUsernameProblemLanguageResultExecution timeMemory
84113XBXJLeiLeLeiLeMate (COCI18_mate)Pypy 2
80 / 100
2073 ms35912 KiB
s = raw_input().split()[0] q = input() length = len(s)+1 arr1 = [[] for i in range(length)] arr1[0].append(1) def get_num(row, column): num = 0 if column >= 0: num = arr1[row][column] return mod(num) def combination(n, d): k = d - 2 return mod(arr1[n][k]) def mod(num): return num % (10**9+7) def lst_id(letter): return ord(letter) - ord("a") for j in range(1, length): for i in range(j): arr1[j].append(mod(get_num(j - 1, i - 1) + get_num(j - 1, i))) arr1[j].append(1) arr = [[0 for i in range(26)] for i in range(len(s))] arr_c = [0 for i in range(26)] for i in range(len(s)-1, -1, -1): for j in range(26): arr[i][j] = arr_c[j] arr_c[lst_id(s[i])] += 1 arr_r = [] for i in range(q): d, xy = raw_input().split() total = 0 d = int(d) x = xy[0] y = xy[1] for i in range(len(s)): if s[i] == x and i >= d - 2: total += mod(combination(i, d) * arr[i][lst_id(y)]) arr_r.append(mod(total)) for ans in arr_r: print ans
#Verdict Execution timeMemoryGrader output
Fetching results...