std::cout << (size_t)&a
, а то адреса выводятся в 16-ричном виде, а читает он чиста в 10-ричной системе. 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. Последняя группа смещается похожим образом. Если так, то будет вообще линейно.
Пока похоже, что функция скрещивания только берет a, b и c из одного или другого экземпляра. Если в изначально сгенерированном не будую содержаться ответы, что правктически невозможно, то ничего и не найдется никогда.