Omówienie zadania “Trójkąt”

Omówienie zadania Trójkąt – zadanie pokazuje jak sortować liczby w C++:
https://youtu.be/sQ99vyC2lJ4?t=5646
Zadanie analogiczne do zadania Deski z XIV Olimpiady Informatycznej Juniorów.
#include <bits/stdc++.h>
using namespace std;

const int MAX_ODCINKOW = 1e6+7;
long long odcinki[MAX_ODCINKOW];

int main() {
 ios_base::sync_with_stdio(0);
 cin.tie(0);
 cout.tie(0);

 int liczba_odcinkow;
 long long obwod;
 int i;

 
 cin >> liczba_odcinkow;

 for (i=0; i<liczba_odcinkow; ++i)
    cin >> odcinki[i];

 sort (odcinki, odcinki+liczba_odcinkow);

 obwod = odcinki[liczba_odcinkow-1] + odcinki[liczba_odcinkow-2] + odcinki[liczba_odcinkow-3];
 if ( odcinki[liczba_odcinkow-1] < odcinki[liczba_odcinkow-2] + odcinki[liczba_odcinkow-3] ) {
 	cout << obwod << "\n";
	return 0;
 }
 for (i=liczba_odcinkow-4; i>=0; --i) {
    obwod = obwod - odcinki[i+3];
    obwod = obwod + odcinki[i];
    if ( odcinki[i+2] < odcinki[i+1] + odcinki[i] ) {
   	   cout << obwod << "\n";
	   return 0;
    }
 }
 
 cout << -1 << "\n";
 return 0;
}

Nie dodano jeszcze komentarza, rozpocznij dyskusję pierwszy.

Dodaj komentarz