Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
qpaHTa3ep4ik
1 / 1 / 1
Регистрация: 27.11.2011
Сообщений: 9
#1

Найти числа что бы (xi – xj)*(xj – xk) было макс. - C++

21.01.2012, 22:10. Просмотров 499. Ответов 4
Метки нет (Все метки)

На прямой задано n точок. Координаты этих точок x1, x2, ..., xn. Нужно найти такие 3 точки i, j и k (xi > xj > xk), что бы значение (xi – xj)*(xj – xk) было максимальным.

Входные данные
Ввести с клавиатуры число n (1< n < pow(10,5). Дальше идут n целых чисел, Которые по модулю не больше pow(10,6).


Вот вариант решения, но задача прошла только 9 из 10 тестов, помогите найти недочёт, по моему дело в типах



C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using namespace std;
#include<iostream>
#include<math.h>
int main()
{
      int a[100000],i,n;
      long long v,mx,mn,sr,minr,j;
      cin>>n;
      for(i=0;i<n;i++)
      {
          cin>>a[i];
      }
      mx=a[0];
      mn=a[0];
      for(i=0;i<n;i++)
      {
         if(a[i]>mx){mx=a[i];}
         if(a[i]<mn){mn=a[i];}
      }
       j=(mx+mn)/2;
       minr=mx;
       for(i=0;i<n;i++)
       {
         if(a[i]!=mx&&a[i]!=mn&&fabs(a[i]-j)<minr){sr=a[i];minr=fabs(a[i]-j);}  
       }
       v =(long long)(mx-sr)*(sr-mn);
   //  cout<<v<<" "<<mx<<" "<<mn<<" "<<sr;
    
 cout<<v;
 
       return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.01.2012, 22:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти числа что бы (xi – xj)*(xj – xk) было макс. (C++):

Найти мин элемент каждой строки и макс элемент столбцов, строку с макс суммой, строку с макс элем. - PascalABC.NET
Массив 10х10 N=10 1) Минимальный элемент каждой строки 2) Максимальный элемент каждого столбца 3) В какой строке максимальная...

имея 2 числа int N,M найти макс. делитель этих числ - Java SE
я новенький в java и хочу удивить решение етой задачи условие: имея 2 числа int N=15,M=45 найти макс. делитель этих числ заранее...

Найти макс a, b, h, учитывая что функция не должна быть больше 1000 - MathCAD
Хочу найти макс a,b,h, учитывая что функция не должна быть больше 1000 но что то ему не нравится помогите исправить кажется...

Как изменить код что бы можно было вручную писать числа самому! - Java SE
Как изменить код что бы можно было вручную писать числа самому! import java.util.Arrays; public class Returnnnn { public...

Найти алгоритм нахождения А и В в зависимости от N таким образом, что бы (А - В) было наименьшим - Алгебра
Имеем 5*A - 2*B = N, N &gt; 3 Необходимо найти алгоритм нахождения А и В в зависимости от N таким образом, что бы (А - В) было наименьшим. ...

Найти вероятность того, что одним из стрелявших было первое орудие - Теория вероятностей
В батарее 4 орудия. Первое орудие попадает в цель с вероятностью 0,3 , остальные три по 0,2.Два орудия стреляют залпом и оба попадают в...

4
NoMasters
Псевдослучайный
1764 / 1107 / 73
Регистрация: 13.09.2011
Сообщений: 3,148
21.01.2012, 22:49 #2
Пожалуй, имеет смысл сделать j и minr вещественными.
0
qpaHTa3ep4ik
1 / 1 / 1
Регистрация: 27.11.2011
Сообщений: 9
23.01.2012, 21:14  [ТС] #3
Нет, на результаты не повлияло...
0
Roof
154 / 154 / 10
Регистрация: 03.11.2010
Сообщений: 393
23.01.2012, 21:57 #4
Цитата Сообщение от NoMasters Посмотреть сообщение
Пожалуй, имеет смысл сделать j и minr вещественными.
Пробуйте плюс к этому

C++
1
2
3
4
5
...
double j, minr;
...
j=(mx+mn)/2.0;
...
0
qpaHTa3ep4ik
1 / 1 / 1
Регистрация: 27.11.2011
Сообщений: 9
23.01.2012, 23:30  [ТС] #5
Неа, всё те же 90% прохождения теста(
0
23.01.2012, 23:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2012, 23:30
Привет! Вот еще темы с ответами:

Найти вероятность события, что из шести выстрелов было три удачных - Теория вероятностей
Стрелок делает 6 выстрелов в тире. Вероятность успеха в каждом выстреле равна 0,7. Найти вероятность события, что из шести выстрелов было...

Необходимо найти алгоритм нахождения А и В в зависимости от N таким образом, что бы (А + В) было наименьшим - Алгебра
Имеем 5*A - 2*B = N, N &gt; 3, A и B - натуральные. Необходимо найти алгоритм нахождения А и В в зависимости от N таким образом, что бы (А +...

Как из трехзначного числа найти среднее число, чтобы оно было четное - C#
var c = from ch in mass where ch &gt;= 100 &amp;&amp; ch &lt;= 180 orderby ch descending ...

Найти НОК и НОД , и что бы можно было ввести до 10 чисел , как это сделать на с++? - C++
Здравствуйте , мне нужно найти НОК и НОД , и что бы можно было ввести до 10 чисел , как это можно реализовать на языке С++?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.