Другие языки программирования и технологии

Легкая задача на с++

Вася очень хочет стать профессором математики. Но для этого ему нужно защитить несколько научных докладов. Один из них - "Расстояния в массиве". Назовем A-B расстоянием в массиве количество чисел, стоящих на позициях между числами A и B. Для того, чтоб быстрее закончить свой доклад, Вася просит Вас найти для данного массива минимально-максимальное расстояние. Как видно из названия - это расстояние между максимальным и минимальным числом массива. Очень прошу решить задачу на с++.
Ввод

В первой строке задано целое число n (2 <= n <= 100) — количество элементов массива. Во второй строке задана последовательность целых чисел a[1],a[2],...a[n] (1 <= a[i] <= 1000), в которой число a[i] обозначает i-ый элемент массива. Все числа различны.

Вывод

Выведите одно целое число - минимально-максимальное расстояние для данного массива.

Пример ввода:

10
3 2 1 4 5 6 7 10 8 9
Пример вывода:

4
Ну вот делать больше нечего, как за всякими раздолбаями задачки решать
GK
Gennadiy Kim
15 498
Лучший ответ
#include <cstdlib>
#include <iostream>
#include <fstream>
using namespace std;
struct item{int v,i;};
int main(){
ifstream f("C:\\Users\\root\\Desktop\\1.txt");
while (!f.eof()){
int n,i;f>>n;item a,min,max;
for(;i<n&&!f.eof();f>>a.v,a.i=i,cout<<a.v<<' ', a.v>max.v||!i?max.v=a.v,max.i=i:i,a.v<min.v||!i?min.v=a.v,min.i=i:i,++i);
cout<<endl<<abs(max.i-min.i)-1<<endl;
}
f.close(),cin.get(); return 0;
}
#include <iostream>
#include <random>
using namespace std;
int main() {
short n;
cin >> n;
if (n < 2 || n > 101) exit(0);
uniform_int_distribution<short> uid(1, 1000);
random_device rd;
mt19937 gen(rd());
short flags[1001] = { 0 };
short box[100] = { 0 };
for (short i = 0; i < n; ++i) {
short value;
while (true) {
value = uid(gen);
if (!flags[value]) {
++flags[value];
box[i] = value;
break;
}
}
}
for (short i = 0; i < n; ++i) cout << box[i] << ' ';
cout.put('\n');
auto first = begin(box);
auto last = begin(box) + n;
auto[min, max] = minmax_element(first, last);
auto diff = abs(max - min);
auto res = diff < 3? 0 : diff - 1;
cout << res << '\n';
system("pause");
}
Roman Leschenko
Roman Leschenko
95 680
const int n = 5;
int a[n] = {1, 2, 3, 4, 5};

int min{a[0]}, max{a[0]}, imin{0}, imax{0};

for (int i = 1; i < n; i++) {
if (a[i] > max) { max = a[i]; imax = i;}
if (a[i] < min) { min = a[i]; imin = i;}
}

cout << abs(imax - imin) - 1;