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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ В программе про игральные кости нужно дать вес каждой грани... http://www.cyberforum.ru/cpp-beginners/thread432604.html
Помогите пожалуйста!!! В программе про игральные кости нужно дать вес каждой грани, Вес каждой грани от 0.1 до 1. Вес означает с какой вероятностью выпадет грань. #include <iostream> #include...
C++ Перегрузка оператора индексации и присваивания (C++) Доброго времени суток уважаемые форумчане. Возникла проблема Допустим у меня есть класс, в котором находится некий массив и нужно сделать так, чтобы работать с классом можно было как с массивом... http://www.cyberforum.ru/cpp-beginners/thread432599.html
C++ Работа с файлами базы данных
Здравствуйте. Нужно написать программу для поддержки последовательного метода доступа к файлу базы данных на тему "Книжный магазин", которая реализует следующеие функции: 1.Создание файла базы...
C++ Написать программу для вычисления функции F
помогите решить данные 2 задачи 1.Использовать оператор while Написать программу для вычисления функции F, при этом, если не указано количество шагов (бесконечность), то вычисления проводить с...
C++ Вопрос о перегрузке ++/-- http://www.cyberforum.ru/cpp-beginners/thread432543.html
Рассмотрим простой пример постфиксной и префиксной операции инкремента: int main() { int i=0; cout<< i++; cout<< ++i; _getch(); return 0; }
C++ Можно ли это написать как то проще #include <cstdlib> #include <iostream> #include <stdlib.h> #include <math.h> using namespace std; /* В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) количество... подробнее

Показать сообщение отдельно
qpaHTa3ep4ik
1 / 1 / 1
Регистрация: 27.11.2011
Сообщений: 9

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

21.01.2012, 22:10. Просмотров 500. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.