import math
import sys
def get_first_max(tree, idx, l, r, L, R):
if r <= L or R <= l:
return -1
if l >= L and r <= R:
return tree[idx]
m = (l + r) // 2
return max(get_first_max(tree, idx * 2 + 1, l, m, L, R), get_first_max(tree, idx * 2 + 2, m, r, L, R))
num = input()
k = int(input())
n = len(num)
N = 2**math.ceil(math.log2(n))
M1 = 10 ** 7
M2 = 10 ** 6
tree = [-1] * (2 * N)
for i in range(n):
tree[N - 1 + i] = int(num[i]) * M1 + M2 - i
for i in range(N - 2, -1, -1):
tree[i] = max(tree[2 * i + 1], tree[2 * i + 2])
i = 0
ans = ""
for _ in range(n - k):
maximum = get_first_max(tree, 0, 0, N, i, i + k + 1)
val = maximum // M1
pos = M2 - maximum % M1
ans += str(val)
k -= pos - i
i = pos + 1
if k == 0:
ans += num[i:]
break
print(ans)
Объяснение:
1) #include <iostream>
using namespace std;
int main()
{
int a, b;
cout<<"Enter number 1";
cin >> a;
cout<<"Enter number 2";
cin >> b;
int res = a + b;
cout << "Result - " << res << endl;
return 0;
}
1.1) К целочисленному типу
1.2)2 входных значения
1.3)1 результат
1.4)(я не понимаю какие стрелки)
1.5)A + B = RES
2) #include <iostream>
using namespace std;
int main()
{
float speed, time;
cout<<"Enter speed";
cin >> speed;
cout<<"Enter time";
cin >> time;
int length = speed * time;
cout << "Length- " << length << endl;
return 0;
}
2.1) К дробному типу
2.2)2 входных значения
2.3)1 результат
2.4)(я не понимаю какие стрелки)
2.5)S = V * t
3. Слово Integer
4. можно: Vasya СУ-27 @mail_ru
m11 Петя СУ_27 lenta.ru
m 1 Quo vadis СУ(27)
нельзя: 1m Митин брат _27 "Pes barbos"
5. b!
6. в)