Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/21: Рейтинг темы: голосов - 21, средняя оценка - 4.90
0 / 0 / 0
Регистрация: 21.12.2017
Сообщений: 2
1

Составить треугольник наибольшей площади, используя в качестве сторон три отрезка из заданных

18.05.2018, 21:53. Показов 3894. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
(Время: 0,5 сек. Память: 16 Мб Сложность: 41%)
Дан набор из нескольких отрезков. Необходимо составить треугольник наибольшей площади, используя в качестве сторон три отрезка из заданных.

Требуется написать программу, которая найдет наибольшую площадь треугольника.

Входные данные
Входной файл INPUT.TXT содержит в первой строке одно целое число N (3 ≤ N ≤ 1000) – количество отрезков. Во второй строке содержатся N целых чисел от 1 до 1000 – длины отрезков. Числа разделены пробелом.

Выходные данные
Выходной файл OUTPUT.TXT должен содержать одно число с тремя десятичными знаками после запятой – наибольшую площадь треугольника из заданных отрезков. Если из заданных отрезков нельзя построить ни одного треугольника, то следует вывести 0.
Вот моя программа, ошибка времени на 22 тесте.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <bits/stdc++.h>
using namespace std;
int main (){
    double n,p,q=0,s=0,a[2000];
    int k,i,j;
    cin>>n;
    for(int i=1; i<=n; i++)cin>>a[i];
 
    for(i=1; i<=n-2; i++){
        for(j=i+1; j<=n-1; j++){
            for(k=j+1; k<=n; k++){
        p=(a[i]+a[j]+a[k])/2.0;
        q=p*(p-a[i])*(p-a[j])*(p-a[k]);
            if(q>s){s=q;}
            }
        }
    }
    if (s>0) {cout<<fixed<<setprecision(3)<<(sqrt(s));} else {cout<<0;}
    return 0;
}
1)
5
2 4 8 16 7
Ответ: 13.998
2)
3
3 4 5
Ответ: 6.000
3)
3
1 2 5
Ответ:
0
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.05.2018, 21:53
Ответы с готовыми решениями:

Найти треугольник наибольшей площади с вершинами в заданных точках
Если не сложно помогите пожалуйста хотя бы просто алгоритм, от куда мыслить Дано натуральное число...

Составить треугольник наибольшей площади, используя в качестве сторон три отрезка из заданных
Дан набор из нескольких отрезков. Необходимо составить треугольник наибольшей площади, используя в...

Найти такой треугольник наибольшей площади, у которого нет общих точек с осью Ох, а одна из сторон лежит на оси Оу
На плоскости дан набор точек с целочисленными координатами. Необходимо найти такой треугольник...

Составить программу расчета площади и периметра прямоугольника при заданных длинах сторон
Составить программу расчета площади и периметра прямоугольника при заданных длинах сторон. / Pascal...

4
0 / 0 / 0
Регистрация: 27.07.2019
Сообщений: 8
27.07.2019, 22:08 2
так понятно же первым же делом проходишь n^3 операций а при n=1000 это уже 10^9 действий а ограничение на 0,5 с
0
4817 / 2278 / 287
Регистрация: 01.03.2013
Сообщений: 5,947
Записей в блоге: 28
27.07.2019, 22:45 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
const int N = 1E3;
int a[N];
 
int comp (const void * a, const void * b) { return ( *(int*)b - *(int*)a ); }
double sq(double x, double y, double z) { if (x > (y+z)) return 0; double p = (x + y + z) / 2; return sqrt(p * (p-x) * (p-y) * (p-z)); }
 
int main() {
    int n; std::cin >> n; for (int i=0; i<n; i++) std::cin >> a[i];
    qsort (a, n, sizeof(int), comp);
    double r = 0;
    for (int i=0; i<n-2; i++) { double s = sq(a[i], a[i+1], a[i+2]); r = std::max(r, s); }
    if (r>0) std::cout << std::fixed << std::setprecision(3) << r; else std::cout << 0;
}
Код
Тест	Результат	Время	Память
1	Accepted	0,015	404 Кб
2	Accepted	0,015	400 Кб
3	Accepted	0,015	400 Кб
4	Accepted	0,015	404 Кб
5	Accepted	0,015	400 Кб
6	Accepted	0,015	400 Кб
7	Accepted	0,015	400 Кб
8	Accepted	0,015	400 Кб
9	Accepted	0,015	400 Кб
10	Accepted	0,03	400 Кб
11	Accepted	0,015	400 Кб
12	Accepted	0,03	400 Кб
13	Accepted	0,015	400 Кб
14	Accepted	0,015	400 Кб
15	Accepted	0,015	400 Кб
16	Accepted	0,015	400 Кб
17	Accepted	0,015	404 Кб
18	Accepted	0,015	400 Кб
19	Accepted	0,015	404 Кб
20	Accepted	0,015	400 Кб
21	Accepted	0,015	400 Кб
22	Accepted	0,015	400 Кб
23	Accepted	0,015	400 Кб
24	Accepted	0,015	400 Кб
25	Accepted	0,015	400 Кб
26	Accepted	0,03	400 Кб
27	Accepted	0,015	400 Кб
0
642 / 444 / 224
Регистрация: 10.06.2016
Сообщений: 2,039
29.07.2019, 08:28 4
Yersting, отрезки заданны так, что для любой тройки треугольник существует?
0
515 / 407 / 188
Регистрация: 08.04.2013
Сообщений: 1,739
29.07.2019, 08:46 5
slava_psk, Нет же 1 2 5 Ответ: 0
0
29.07.2019, 08:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.07.2019, 08:46
Помогаю со студенческими работами здесь

Определить длины сторон треугольника наибольшей площади
Определить длины сторон треугольника наибольшей площади, если одна из его сторон совпадает осью...

Найти треугольник наибольшей площади
Всем доброго времени суток! У меня вот такая задача - Входные данные - координаты n точек. Найти...

Определить длины сторон прямоугольника наибольшей площади, вписанного в прямоугольную трапецию
Определить длины сторон прямоугольника наибольшей площади, вписанного в прямоугольную трапецию с...

Параллелограмм наибольшей площади, вписанный в треугольник
Помогите решить задачу пожалуйста! В равнобедренный треугольник, надо вписать параллелограмм...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru