Проблема с кодом c++.

Задача: Дан массив из N целых чисел. Требуется найти минимум в этом массиве и поменять его с первым элементом.
Ввод: сначала N - количество элементов в массиве, а потом элементы массива.

Проблема: На двух тестах правильные ответы и мои ответы доступны только для скачивания и я не понимаю, почему так, что нужно изменить.

Тест 1:

3

-70 -37 72

Тест 2:

9

-721901275 851127613 -336844043 253069616 238021678 143004029 588495093 -605634013 64587483

Мой код:

#include

using namespace std;

int main(){

int n;

cin >> n;

long long arr[100], imin;

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

cin >> arr[i];

}

long long min = arr[0];

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

if (arr[i] < min) {

min = arr[i];

imin = i;

}

}

swap(arr[0], arr[imin]);

// cout << imin;

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

cout << arr[i] << " ";

}

return 0;

}

Ответы

Ответ дал: romamelchenko64
0

Ответ:

#include

using namespace std;

int main(){

long long n;

cin >> n;

long long arr[100], imin = 0;

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

cin >> arr[i];

}

long long min = arr[0];

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

if (arr[i] < min) {

min = arr[i];

imin = i;

}

}

long long buf = arr[0];

arr[0] = arr[imin];

arr[imin] = buf;

// cout << imin;

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

cout << arr[i] << " ";

}

return 0;

}

Объяснение:

возможно потому что переменная n была типа int.

Если не так, прошу прощения, удалите ответ


romamelchenko64: а вы не пробовали сделать массив больше? может поэтому ругается
STGLN: то, что n интовая - нормально. Больше 2621440 элементов в массив, созданный на стэке все равно не впихнешь, а это явно меньше, чем может в себе уместить инт
STGLN: а вот замечание по поводу изначального размера массива дельное. Скорее всего, в этом и проблема
Ответ дал: STGLN
1

1) Какие ограничения по N и всем элементам массива? Может вообще придется прописывать длинную арифметику или придумывать решение без использования массивов...

2) Почему arr[100] ? Элементов точно не больше ста? Если не знаешь N заранее, то лучше использовать std::vector

3) переменная imin инициализируется, но не декларируется, что может стать причиной проблем в случае, если минимальный элемент первый.

4) Лучше не называть переменную min или max потому что это встроенные функции языка и может быть неоднозначный вызов

#include <iostream>

#include <vector>

using namespace std;

typedef long long ll;

void solve(){

   int n;

   cin >> n;

   vector<ll> a(n);

   for(auto &i: a) cin >> i;

   pair<ll, int> minValue = {a.front(), 0};

   for(int i = 1; i < n; i++)

       if(a[i] < minValue.first)

           minValue = {a[i], i};

   swap(a.front(), a[minValue.second]);

   for(auto &i: a) cout << i << " ";

}

int main(){

   solve();

}

Вас заинтересует