Вопрос Помощ с оптимизацией кода

Регистрация
10 Сен 2013
Сообщения
77
Репутация
0
Спасибо
0
Монет
0
Решаю эту задачу
286221440_d6454a746b16c8c093fcade6154e0e88_240x240.png

286221440_7967c7967c78f4f80d714d1d1a372ad5_240x240.png

#include

using namespace std;

#define int int64_t

signed main() {

ios::sync_with_stdio(0);

cin.tie(0);

int t;

cin >> t;

while (t--) {

int n;

cin >> n;

vector vec(n);

for (int i = 0; i < n; ++i) cin >> vec;

int ans = 0;

int k = -1;

for (int h = 0; h < n; ++h) {

if (vec[h] > k) k = vec[h];

} // k это число m по условию задачи



for (int i = 0; i < n; ++i) {

for (int s = 2; s ans) ans = anss;

}

}

cout
 
Я смотрю на входные данные.
Там в начале идет типа

4
5
1 2 3 4 5

5 - это количество элементов в массиве, ладно.
А что такое 4?

&gt;// k это число m по условию задачи
А почему бы m не назвать m? Чтобы никто не догадался?

Дык вот, если там в начале вводится то самое m, то задача сия имеет сложность O(n). А у тебя, судя по тройному циклу, O(n^3). Просто не делай так.
 
а чё другой категории для вопроса не нашёл? типа где шёл, там и присел?
 
#include
using namespace std;
#define int int64_t

signed main() {
ios::sync_with_stdio(0);
cin.tie(0);
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
vector vec(n);
for (int i = 0; i < n; ++i) cin >> vec;

// Находим максимальный элемент массива
int k = *max_element(vec.begin(), vec.end());

// unordered_map для подсчета числа элементов с одинаковым остатком
unordered_map cnt;

// Подсчет количества элементов с одинаковым остатком
for (int i = 0; i < n; ++i) {
for (int s = 2; s
 
Там ошибка, перепишите
 
Назад
Сверху