Omówienie zadania “Bierki” (Olimpiada Informatyczna Juniorów)

Szczegółowe omówienie zadania Bierki:

Link do powyższego omówienia zadania Bierki:
https://youtu.be/MJCkuBDezSE?t=895
Link do treści zadania Bierki:
https://szkopul.edu.pl/problemset/problem/KiEvCpZBaUNRCp6oTZx2oAQ4/site/
Zadanie Bierki, pochodzi II etapu OIG, poprzednika Olimpiady Informatycznej Juniorów.
Link do wszystkich zadań I edycji Olimpiady Informatycznej Juniorów:
https://szkopul.edu.pl/portal/problemset/oig/1

Zadanie Bierki jest pięknym zadaniem wymagającym algorytmu gąsienicy.

Jak się uczyć na podstawie tego zadania?
https://youtu.be/QgLyXYmFQeU?t=2019

——-
Kod C++ programu Bierki, który jest omówiony w powyższym filmie i który otrzymuje 100%


#include <bits/stdc++.h>
using namespace std;

int dlugosci_bierek[30010];

int main(){

 ios_base::sync_with_stdio(0);
 cin.tie(0);
 cout.tie(0);

 int liczba_bierek;
 int max_liczba_bierek_dla_ktorych_trojkat;
 int dolna_bierka, gorna_bierka;
 int i;

 cin >>liczba_bierek;

 for (i=0; i<liczba_bierek; ++i)
    cin >> dlugosci_bierek[i];

 sort (dlugosci_bierek,dlugosci_bierek+liczba_bierek);

 max_liczba_bierek_dla_ktorych_trojkat = 0;
 dolna_bierka=0, gorna_bierka=2; 
 while (gorna_bierka<liczba_bierek) {
    if ( (dlugosci_bierek[dolna_bierka] + dlugosci_bierek[dolna_bierka+1]) > dlugosci_bierek[gorna_bierka] ) {
       max_liczba_bierek_dla_ktorych_trojkat = max (max_liczba_bierek_dla_ktorych_trojkat, gorna_bierka-dolna_bierka+1);
       ++gorna_bierka;
	   continue; 
	}
    ++dolna_bierka; 
 }

 cout << max_liczba_bierek_dla_ktorych_trojkat;
 return 0;
}
Link do pliku ze wzorcowym kodem C++ zadania Bierki 

 

 

 

 

Nie dodano jeszcze komentarza, rozpocznij dyskusję pierwszy.

Dodaj komentarz