int S(int p, int q) {
int sum = 0;
for (int d = 1; d < 10; ++d) {
for (int tens = 1; tens <= q; tens *= 10) {
int left = p - d*tens;
if (left < 0) left = 0;
else left = (left + 10*tens-1)/(10*tens);
int right = q - d*tens;
if (right < 0) right = -1;
else right /= 10*tens;
sum += d*(right - left + 1);
}
}
return sum;
} И вообще, использование 3d массива считается нормой для такой задачи, или лучше стараться этого избегать и писать иначе?
там может (r - l) сильно меньше n.
что для вычисления max и min в очередной группе можно применить тот прием со стеком, который используется для вычисления оных на sliding window. Последняя группа смещается похожим образом. Если так, то будет вообще линейно.
Поэтому чтобы действительно намерить ассимптотическую сложность - надо брать большие n.