<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Forum Pasja Informatyki - Najnowsze z tagiem oig</title>
<link>https://forum.pasja-informatyki.pl/tag/oig</link>
<description>Powered by Question2Answer</description>
<item>
<title>Zadanie Przyjęcie finał X OIG</title>
<link>https://forum.pasja-informatyki.pl/584929/zadanie-przyjecie-final-x-oig</link>
<description>Mam problem z takim zadaniem: &lt;a href=&quot;https://szkopul.edu.pl/problemset/problem/JXtAipj6WTNmFZirD0FFb2kq/site/?key=statement&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://szkopul.edu.pl/problemset/problem/JXtAipj6WTNmFZirD0FFb2kq/site/?key=statement&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Napisałem bruta na 50pkt, symulując zachłanie dla każdego C. Nie mam pomysłu jak to zrobić lepiej.&lt;br /&gt;
&lt;br /&gt;
Prosiłbym o jakiegoś hinta.&lt;br /&gt;
&lt;br /&gt;
Z góry dziękuję za pomoc i poświęcony czas!</description>
<category>Algorytmy</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/584929/zadanie-przyjecie-final-x-oig</guid>
<pubDate>Tue, 16 May 2023 18:39:21 +0000</pubDate>
</item>
<item>
<title>Zadanie Wskaźnik Hirscha finał OIG</title>
<link>https://forum.pasja-informatyki.pl/584830/zadanie-wskaznik-hirscha-final-oig</link>
<description>

&lt;p&gt;Mam problem z takim zadaniem:&amp;nbsp;&lt;a href=&quot;https://szkopul.edu.pl/problemset/problem/diIixmpgLnmLnihDYGeaDwYQ/site/?key=statement&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://szkopul.edu.pl/problemset/problem/diIixmpgLnmLnihDYGeaDwYQ/site/?key=statement&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;Samo zadanie wydało mi się łatwe. Sortuje elementy od najmniejszych wymaganych publikacji i idę od góry zachłanem z setem, żeby naliczyć koszt[v] = min koszt biorąc A[v] elementów. I potem dla każdego zapytania się bin searchuję po kosztach. Napisałem kod i dostaję całą masę WA, i nie wiem, gdzie jest błąd:&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;algorithm&amp;gt;
#include &amp;lt;set&amp;gt;

using namespace std;
typedef long long ll;

struct Element
{
    ll ile_cytowan;
    ll cena;
    bool operator &amp;lt; (const Element &amp;amp;element) const
    {
        return ile_cytowan &amp;lt; element.ile_cytowan;
    }
};

ll n = 0, q = 0;
ll suma = 0;
vector&amp;lt;Element&amp;gt; elementy;
vector&amp;lt;ll&amp;gt; koszty;
multiset&amp;lt;ll&amp;gt; S;

inline void napelniaj()
{
    koszty.assign(n,1e18+20);
    for (int i = n-1; i &amp;gt;= 0; --i)
    {
        suma += elementy[i].cena;
        S.insert(elementy[i].cena);
        while(S.size() &amp;gt; elementy[i].ile_cytowan)
        {
            ll val = *S.rbegin();
            suma -= val;
            S.erase(S.lower_bound(val));
        }
        if (S.size() == elementy[i].ile_cytowan)
            koszty[i] = suma;
    }
}

inline ll zapytanie()
{
    ll wartosc;
    cin &amp;gt;&amp;gt; wartosc;

    int poczatek = -1, koniec = n, srodek = 0;
    while(koniec - poczatek &amp;gt; 1)
    {
        srodek = (poczatek + koniec) / 2;
        if (wartosc &amp;gt;= koszty[srodek])
            poczatek = srodek;
        else
            koniec = srodek;
    }

    if (poczatek == -1)
        return 0;
    else
        return elementy[poczatek].ile_cytowan;
}

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

    cin &amp;gt;&amp;gt; n &amp;gt;&amp;gt; q;

    elementy.assign(n,{});
    for (int i = 0; i &amp;lt; n; ++i)
        cin &amp;gt;&amp;gt; elementy[i].ile_cytowan &amp;gt;&amp;gt; elementy[i].cena;
    sort(elementy.begin(), elementy.end());

    napelniaj();

    while(q--)
        cout &amp;lt;&amp;lt; zapytanie() &amp;lt;&amp;lt; '\n';

    return 0;
}
&lt;/pre&gt;



&lt;p&gt;Program zazwyczaj daje lekko za małe odpowiedzi.&lt;/p&gt;



&lt;p&gt;edit: usunąłem jednego if-a w operatorze bo i tak nic nie dawał.&lt;/p&gt;



&lt;p&gt;Z góry dziękuję za pomoc i poświęcony czas!&lt;/p&gt;</description>
<category>Algorytmy</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/584830/zadanie-wskaznik-hirscha-final-oig</guid>
<pubDate>Sun, 14 May 2023 14:48:08 +0000</pubDate>
</item>
<item>
<title>Zadanie Złote Jabłko 1 etap X OIG</title>
<link>https://forum.pasja-informatyki.pl/582937/zadanie-zlote-jablko-1-etap-x-oig</link>
<description>Mam problem z takim zadaniem: &lt;a href=&quot;https://szkopul.edu.pl/problemset/problem/ZXKiCopRuLe5diKPU0oMNgNn/site/?key=statement&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://szkopul.edu.pl/problemset/problem/ZXKiCopRuLe5diKPU0oMNgNn/site/?key=statement&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Poza brutem w O(N^2), nie wiem jak to zrobić lepiej, jedynie co to kojarzy mi się trochę to zadanie z zadaniem Megalopolis z 2 etapu XIV OI, żeby puścić DFS-a post-order / pre-order i wyznaczyć dla każdego wierzchołka ile kolejnych jest tego synami i zrobić jakieś drzewo przedziałowe, ale to tu raczej nie zadziała, bo różnych wartości jest nawet 10^5, a nie możemy zrobić tak dużych drzew przedziałowych.&lt;br /&gt;
&lt;br /&gt;
Z góry dziękuję za pomoc i poświęcony czas!</description>
<category>Algorytmy</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/582937/zadanie-zlote-jablko-1-etap-x-oig</guid>
<pubDate>Tue, 28 Mar 2023 21:30:14 +0000</pubDate>
</item>
<item>
<title>Zadanie księgowy OIG</title>
<link>https://forum.pasja-informatyki.pl/582738/zadanie-ksiegowy-oig</link>
<description>Mam problem z takim zdaniem: &lt;a href=&quot;https://szkopul.edu.pl/problemset/problem/2crG-_mquBH3-t56F8OpCNlg/site/?key=statement&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://szkopul.edu.pl/problemset/problem/2crG-_mquBH3-t56F8OpCNlg/site/?key=statement&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Poza brutem w O(N^2) nie wiem jak to ugryść lepiej, ale mam spostrzerzenie, że jak naliczymy sobie sumy prefiksowe od początku i obracamy jakiś fragment w przedziale [l,p], to sumy prefiksowe odwrócą się tylko na tym przedziale, a np. w punktach p+1,p+2,p+3.... oraz l-1, l-2, l-3.... pozostaną takie same. Trochę oczywiste spostrzrzenie, ale myślę, że może się przydać.&lt;br /&gt;
&lt;br /&gt;
Z góry dziękuję za pomoc i poświęcony czas!</description>
<category>Algorytmy</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/582738/zadanie-ksiegowy-oig</guid>
<pubDate>Fri, 24 Mar 2023 17:30:09 +0000</pubDate>
</item>
<item>
<title>Zadanie trójkąt 2 etap XI OIG</title>
<link>https://forum.pasja-informatyki.pl/581800/zadanie-trojkat-2-etap-xi-oig</link>
<description>Mam problem z takim zadaniem: &lt;a href=&quot;https://szkopul.edu.pl/problemset/problem/B_g59y5Mjtj4o5HUUC0pzShh/site/?key=statement&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://szkopul.edu.pl/problemset/problem/B_g59y5Mjtj4o5HUUC0pzShh/site/?key=statement&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Napisałem bruta w O(N^2), na 20pkt, sprawdzam każde możliwe 2 przedzielenia. Nie wiem jak podejść do tego lepiej. Myślałem o jakiś binary searchach i rozważaniu wszystkich przypadków bo długościach boków, w sesnie; najmniejszy - średni - największy, najmniejszy - największy - średni, średni - najmniejszy - największy........ Ale nie wiem, czy to ma jakiś sens i czy da się to tak ugryźć.&lt;br /&gt;
&lt;br /&gt;
Z góry dziękuję za pomoc i poświęcony czas!</description>
<category>Algorytmy</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/581800/zadanie-trojkat-2-etap-xi-oig</guid>
<pubDate>Thu, 09 Mar 2023 19:32:27 +0000</pubDate>
</item>
<item>
<title>programowanie dynamiczne, zadanie kieszonkowe OIG</title>
<link>https://forum.pasja-informatyki.pl/581006/programowanie-dynamiczne-zadanie-kieszonkowe-oig</link>
<description>

&lt;p&gt;Chcąc przećwiczyc dp, natknąłem się na takie zadanie z OIG:&amp;nbsp;&lt;a href=&quot;https://szkopul.edu.pl/problemset/problem/PJA7VC3zOTwh1qPU43Wu9O4v/site/?key=statement&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://szkopul.edu.pl/problemset/problem/PJA7VC3zOTwh1qPU43Wu9O4v/site/?key=statement&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;3 razy próbowałem napisać zachłana, ale wszystkie trzy się wywaliły, ale napisałem dp na 40pkt, w O(N*K). Mianowicie: dp[i][j] - max wynik, jaki możemy osiągnąć przeglądając stosiki od 0&amp;nbsp;do i, biorąc dokładnie j elementów.&lt;/p&gt;



&lt;p&gt;A - tablica górnych elementów&lt;/p&gt;



&lt;p&gt;B - tablica dolnych elementów&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
    dp[0][1] = A[0];
    dp[0][2] = A[0] + B[0];
    for (int i = 1; i &amp;lt; n; ++i)
    {
        dp[i][1] = max(dp[i-1][1], A[i]);
        dp[i][2] = max(dp[i-1][2], max(dp[i-1][1] + A[i], A[i] + B[i]));
        for (int j = 3; j &amp;lt;= k; ++j)
            dp[i][j] = max(dp[i-1][j], max(dp[i-1][j-1] + A[i], dp[i-1][j-2] + A[i] + B[i]));
    }&lt;/pre&gt;



&lt;p&gt;No i na koniec zwracam dp[n-1][k].&lt;/p&gt;



&lt;p&gt;No i mam problem, jak to przyśpieszyć, o ile się wogóle da.&amp;nbsp;&lt;/p&gt;



&lt;p&gt;Z góry dziękuję za pomoc i poświęcony czas!&lt;/p&gt;</description>
<category>Algorytmy</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/581006/programowanie-dynamiczne-zadanie-kieszonkowe-oig</guid>
<pubDate>Sat, 25 Feb 2023 23:44:33 +0000</pubDate>
</item>
<item>
<title>Zadanie Klasy finał OIG</title>
<link>https://forum.pasja-informatyki.pl/580454/zadanie-klasy-final-oig</link>
<description>

&lt;p&gt;Mam problem z takim zadaniem:&amp;nbsp;&lt;a href=&quot;https://szkopul.edu.pl/problemset/problem/qnmBwED8E2cCDmRfeyDun104/site/?key=statement&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://szkopul.edu.pl/problemset/problem/qnmBwED8E2cCDmRfeyDun104/site/?key=statement&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;Napisałem bruta na 30pkt, zauważając, żę kandydat na dlugośc skoku, musi być liczbą pierwszą, więc dla każdego kandydata, w czasie liniowym liczę jaki jest wynik. Niestety pesymistyczna złożonność to O(N^2), bo liczb pierwszych do N, jest baardzo dużo.&lt;/p&gt;



&lt;p&gt;Kod:&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;

using namespace std;

int n = 0, max_wyn = 0, wyn = 0;
string ciag;
vector&amp;lt;bool&amp;gt; sito;
vector&amp;lt;int&amp;gt; F;
vector&amp;lt;int&amp;gt; P;
vector&amp;lt;int&amp;gt; idxy_jedynek;

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

    cin &amp;gt;&amp;gt; n &amp;gt;&amp;gt; ciag;
    sito.assign(n+1,false);
    for (int i = 0; i &amp;lt; n; ++i)
    {
        if (ciag[i] == '#')
            idxy_jedynek.push_back(i);
    }
    if (idxy_jedynek.size() == 0)
    {
        printf(&quot;0&quot;);
        return 0;
    }
    if (idxy_jedynek.size() == 1)
    {
        printf(&quot;1&quot;);
        return 0;
    }
    for (int i = 2; i &amp;lt;= n; ++i)
    {
        if (sito[i] == false)
        {
            P.push_back(i);
            for (int j = i * i; j &amp;lt;= n; j += i)
                sito[j] = true;
        }
    }
    for (int i = 0; i &amp;lt; P.size(); ++i)
    {
        wyn = 0;
        vector&amp;lt;int&amp;gt; stat(P[i],0);
        for (int j = 0; j &amp;lt; idxy_jedynek.size(); ++j)
        {
            stat[idxy_jedynek[j] % P[i]]++;
            wyn = max(wyn,stat[idxy_jedynek[j] % P[i]]);
        }
        max_wyn = max(max_wyn,wyn);
    }
    printf(&quot;%d&quot;,max(1,max_wyn));
    return 0;
}&lt;/pre&gt;



&lt;p&gt;Ma ktoś pomysł jak to przyśpieszyć?&lt;/p&gt;



&lt;p&gt;Z góry dziękuję za pomoc i poświęcony czas!&lt;/p&gt;</description>
<category>Algorytmy</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/580454/zadanie-klasy-final-oig</guid>
<pubDate>Sat, 18 Feb 2023 18:03:28 +0000</pubDate>
</item>
<item>
<title>Zadanie Palindrom OIG</title>
<link>https://forum.pasja-informatyki.pl/577236/zadanie-palindrom-oig</link>
<description>Natknalem sie na zadanie palindrom z finalu OIG-a &lt;a href=&quot;https://szkopul.edu.pl/problemset/problem/LWN4TDpmrwD5fLos0ajgFyRD/site/?key=statement&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://szkopul.edu.pl/problemset/problem/LWN4TDpmrwD5fLos0ajgFyRD/site/?key=statement&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Kompletnie nie wiem ja to zrobić. Ma ktoś jakiś pomysł.&lt;br /&gt;
&lt;br /&gt;
Z góry dziękuję za poświęcony czas!</description>
<category>Algorytmy</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/577236/zadanie-palindrom-oig</guid>
<pubDate>Fri, 30 Dec 2022 15:37:14 +0000</pubDate>
</item>
<item>
<title>Zadanie Tamy final OIG</title>
<link>https://forum.pasja-informatyki.pl/576551/zadanie-tamy-final-oig</link>
<description>

&lt;p&gt;Robie zadanie tamy z finalu 5 OIG-a:&amp;nbsp;&lt;a href=&quot;https://szkopul.edu.pl/problemset/problem/vjNqpia6QTMVAmkfml9VonDX/site/?key=statement&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://szkopul.edu.pl/problemset/problem/vjNqpia6QTMVAmkfml9VonDX/site/?key=statement&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;Zadanie wydaje się dośc proste. Robię seta przepełnień i &quot;zamiatam miotłą po czasie&quot; symulując kolejne zdarzenia. Jednak mam gdzieś bląd w implementacji. Ma ktoś pomysł gdzie? Siedzę już 4 godzinę i nigdzie nie mogę znaleźć, a kod wydaje się być przejrzysty.&lt;/p&gt;



&lt;pre class=&quot;brush:plain;&quot;&gt;
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;set&amp;gt;

using namespace std;

struct Element_seta_po_rozlaniach
{
    long long po_ilu_rozleje;
    long long szerokosc;
    long long numer;
    long long ile_leci_opadow;
    long long wartosc_lewej_tamy;
    long long wartosc_prawej_tamy;
    bool operator &amp;lt; (const Element_seta_po_rozlaniach &amp;amp;element_seta_po_rozlaniach) const
    {
        if (po_ilu_rozleje == element_seta_po_rozlaniach.po_ilu_rozleje)
            return numer &amp;lt; element_seta_po_rozlaniach.numer;
        return po_ilu_rozleje &amp;lt; element_seta_po_rozlaniach.po_ilu_rozleje;
    }
};

struct Element_seta_po_idxach
{
    long long idx;
    long long po_ilu_rozleje;
    bool operator &amp;lt; (const Element_seta_po_idxach &amp;amp;element_seta_po_idxach) const
    {
        return idx &amp;lt; element_seta_po_idxach.idx;
    }
};

long long n = 0, wczytana_liczba = 0;
vector&amp;lt;long long&amp;gt; tamy;
set&amp;lt;Element_seta_po_rozlaniach&amp;gt; rozlania;
set&amp;lt;Element_seta_po_idxach&amp;gt; numery_sektorow;
Element_seta_po_rozlaniach spr;
Element_seta_po_rozlaniach jeden_lewo;
Element_seta_po_rozlaniach jeden_prawo;

void rozszerzaj_oba()
{
    rozlania.erase({spr.po_ilu_rozleje,-1,spr.numer,-1,-1,-1});
    rozlania.erase({jeden_lewo.po_ilu_rozleje,-1,jeden_lewo.numer,-1,-1,-1});
    rozlania.erase({jeden_prawo.po_ilu_rozleje,-1,jeden_prawo.numer,-1,-1,-1});
    numery_sektorow.erase({spr.numer,-1});
    numery_sektorow.erase({jeden_lewo.numer,-1});
    numery_sektorow.erase({jeden_prawo.numer,-1});
    long long szerokosc = jeden_lewo.szerokosc+spr.szerokosc+jeden_prawo.szerokosc;
    long long suma_opadow = jeden_lewo.ile_leci_opadow + spr.ile_leci_opadow + jeden_prawo.ile_leci_opadow;
    long long min_tamy_obok = min(jeden_lewo.wartosc_lewej_tamy,jeden_prawo.wartosc_prawej_tamy);
    long long po_ilu_roz = szerokosc * min_tamy_obok / suma_opadow + 1;
    rozlania.insert({po_ilu_roz,szerokosc,spr.numer,suma_opadow,jeden_lewo.wartosc_lewej_tamy,jeden_prawo.wartosc_prawej_tamy});
    numery_sektorow.insert({spr.numer,po_ilu_roz});
}

void rozszerzaj_lewy()
{
    rozlania.erase({spr.po_ilu_rozleje,-1,spr.numer,-1,-1,-1});
    rozlania.erase({jeden_lewo.po_ilu_rozleje,-1,jeden_lewo.numer,-1,-1,-1});
    numery_sektorow.erase({spr.numer,-1});
    numery_sektorow.erase({jeden_lewo.numer,-1});
    long long szerokosc = spr.szerokosc + jeden_lewo.szerokosc;
    long long suma_opadow = spr.ile_leci_opadow + jeden_lewo.ile_leci_opadow;
    long long min_tamy_obok = min(jeden_lewo.wartosc_lewej_tamy,spr.wartosc_prawej_tamy);
    long long po_ilu_roz = szerokosc * min_tamy_obok / suma_opadow + 1;
    rozlania.insert({po_ilu_roz,szerokosc,spr.numer,suma_opadow,jeden_lewo.wartosc_lewej_tamy,spr.wartosc_prawej_tamy});
    numery_sektorow.insert({spr.numer,po_ilu_roz});
}

void rozszerzaj_prawy()
{
    rozlania.erase({spr.po_ilu_rozleje,-1,spr.numer,-1,-1,-1});
    rozlania.erase({jeden_prawo.po_ilu_rozleje,-1,jeden_prawo.numer,-1,-1,-1});
    numery_sektorow.erase({spr.numer,-1});
    numery_sektorow.erase({jeden_prawo.numer,-1});
    long long szerokosc = jeden_prawo.szerokosc+spr.szerokosc;
    long long suma_opadow = jeden_prawo.ile_leci_opadow + spr.ile_leci_opadow;
    long long min_tamy_obok = min(spr.wartosc_lewej_tamy,jeden_prawo.wartosc_prawej_tamy);
    long long po_ilu_roz = szerokosc * min_tamy_obok / suma_opadow + 1;
    rozlania.insert({po_ilu_roz,szerokosc,spr.numer,suma_opadow,spr.wartosc_lewej_tamy,jeden_prawo.wartosc_prawej_tamy});
    numery_sektorow.insert({spr.numer,po_ilu_roz});
}

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

    cin &amp;gt;&amp;gt; n;
    for (int i = 0; i &amp;lt;= n; ++i)
    {
        cin &amp;gt;&amp;gt; wczytana_liczba;
        tamy.push_back(wczytana_liczba);
    }
    for (int i = 1; i &amp;lt;= n; ++i)
    {
        cin &amp;gt;&amp;gt; wczytana_liczba;
        long long po_ilu_roz = min(tamy[i-1],tamy[i]) / wczytana_liczba + 1;
        rozlania.insert({po_ilu_roz,1,i,wczytana_liczba,tamy[i-1],tamy[i]});
        numery_sektorow.insert({i,po_ilu_roz});
    }

    while(true)
    {
        spr = *rozlania.begin();
        jeden_lewo = {-1,-1,-1,-1,-1,-1};
        jeden_prawo = {-1,-1,-1,-1,-1,-1};
        if (numery_sektorow.begin()-&amp;gt;idx != spr.numer)
        {
            auto it_numery = numery_sektorow.find({spr.numer,spr.po_ilu_rozleje});
            --it_numery;
            jeden_lewo = *(rozlania.find({it_numery-&amp;gt;po_ilu_rozleje,-1,it_numery-&amp;gt;idx,-1,-1,-1}));
        }
        if (numery_sektorow.rbegin()-&amp;gt;idx != spr.numer)
        {
            auto it_numery = numery_sektorow.find({spr.numer,spr.po_ilu_rozleje});
            ++it_numery;
            jeden_prawo = *(rozlania.find({it_numery-&amp;gt;po_ilu_rozleje,-1,it_numery-&amp;gt;idx,-1,-1,-1}));
        }

        if (jeden_lewo.po_ilu_rozleje == -1 &amp;amp;&amp;amp; jeden_prawo.po_ilu_rozleje == -1)
        {
            printf(&quot;%lld&quot;,spr.po_ilu_rozleje);
            return 0;
        }
        else if (jeden_lewo.po_ilu_rozleje == -1)
        {
            if (spr.wartosc_lewej_tamy &amp;lt;= spr.wartosc_prawej_tamy)
            {
                printf(&quot;%lld&quot;,spr.po_ilu_rozleje);
                return 0;
            }
            else
                rozszerzaj_prawy();
        }
        else if (jeden_prawo.po_ilu_rozleje == -1)
        {
            if (spr.wartosc_prawej_tamy &amp;lt;= spr.wartosc_lewej_tamy)
            {
                printf(&quot;%lld&quot;,spr.po_ilu_rozleje);
                return 0;
            }
            else
                rozszerzaj_lewy();
        }
        else
        {
            if (spr.wartosc_lewej_tamy == spr.wartosc_prawej_tamy)
                rozszerzaj_oba();
            else if (spr.wartosc_lewej_tamy &amp;lt; spr.wartosc_prawej_tamy)
                rozszerzaj_lewy();
            else
                rozszerzaj_prawy();
        }
    }
    return 0;
}
&lt;/pre&gt;



&lt;p&gt;Dziękuję za pomoc.&lt;/p&gt;</description>
<category>Algorytmy</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/576551/zadanie-tamy-final-oig</guid>
<pubDate>Sun, 18 Dec 2022 11:36:53 +0000</pubDate>
</item>
<item>
<title>Testy do zadań z OIG / OI</title>
<link>https://forum.pasja-informatyki.pl/568498/testy-do-zadan-z-oig-oi</link>
<description>Cześć,&lt;br /&gt;
&lt;br /&gt;
Czy wie ktoś może czy jest gdzieś w internecie dostęp do testów z zadań z OIG / OI ?&lt;br /&gt;
&lt;br /&gt;
Z góry dziękuję za odpowiedź!</description>
<category>Algorytmy</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/568498/testy-do-zadan-z-oig-oi</guid>
<pubDate>Tue, 21 Jun 2022 17:54:19 +0000</pubDate>
</item>
<item>
<title>Zadanie Mur OIG</title>
<link>https://forum.pasja-informatyki.pl/567700/zadanie-mur-oig</link>
<description>Cześć,&lt;br /&gt;
&lt;br /&gt;
Mam problem z zadaniem Mur z finału 3OIG - &lt;a href=&quot;https://szkopul.edu.pl/problemset/problem/tafyphqdlVgiX1LUrNYB1ifK/site/?key=statement&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://szkopul.edu.pl/problemset/problem/tafyphqdlVgiX1LUrNYB1ifK/site/?key=statement&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Wydaje mi się, że wymyśliłem pomysł działający w O(n) tylko nie wiem jak zaimplementować ten pomysł. A mianowicie:&lt;br /&gt;
&lt;br /&gt;
Porównujemy punkt obserwatora Jacka z 1,2,3,4,5 itd punktem I jest okej jeśli sprawdzimy wszystkie i kierunek obrotu będzie taki sam w sensie(cały czas w lewo albo cały czas w prawo). Problem polega na tym, że nie wiem jak sprawdzić czy kierunek obrotu jest taki sam. Pewnie potrzeba użyć jakieś zawansowanej matematyki, ale nie wiem jak.&lt;br /&gt;
&lt;br /&gt;
Z góry dziękuję za pomoc.</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/567700/zadanie-mur-oig</guid>
<pubDate>Tue, 07 Jun 2022 16:46:01 +0000</pubDate>
</item>
<item>
<title>Zadanie Centrala Telefoniczna OIG</title>
<link>https://forum.pasja-informatyki.pl/565094/zadanie-centrala-telefoniczna-oig</link>
<description>

&lt;p&gt;Cześc przerabiam właśnie zadanie z 3 etapu OIG-a link szkopul:&lt;/p&gt;



&lt;p&gt;&lt;a href=&quot;https://szkopul.edu.pl/problemset/problem/ocGBMr4-sFMy6iEUQ6cZ6gNW/site/?key=statement&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://szkopul.edu.pl/problemset/problem/ocGBMr4-sFMy6iEUQ6cZ6gNW/site/?key=statement&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;Wydaje mi się to zadanie dość proste, jednak dostaję dla wszystkich testów oprócz tych testowych 0pkt.&lt;/p&gt;



&lt;p&gt;Dla każdego wielokąta obliczam pitagorasem maksymalny promień wszystkich wierzchołków(minimalny promień, aby pokryć cały wielokąt) Sortuję ję i sprawdzam cene biorąc pod uwagę elementy składające się z 1 potem 1,2 potem 1,2,3 domów itd i biorę mina. Wiem, że moja aktualna złożonnośc to kwadratowa i mogę przyśpieszyć do O(1) liczenie sumy zysku wszystkich nagród&amp;nbsp;sumami prefiksowymi. Jednak narazie chcę zrobić, żeby algorytm działał.&lt;/p&gt;



&lt;p&gt;Mój kod:&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;algorithm&amp;gt;
#include &amp;lt;cmath&amp;gt;

using namespace std;

struct Wielokat
{
&amp;nbsp; &amp;nbsp; long long nagroda;
&amp;nbsp; &amp;nbsp; long long potrzebny_promien;

&amp;nbsp; &amp;nbsp; bool operator &amp;lt; (const Wielokat&amp;amp;wielokat) const
&amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return potrzebny_promien &amp;lt; potrzebny_promien;
&amp;nbsp; &amp;nbsp; }
};

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

&amp;nbsp; &amp;nbsp; int n = 0;
&amp;nbsp; &amp;nbsp; int k = 0;
&amp;nbsp; &amp;nbsp; int wczytana_nagroda = 0;
&amp;nbsp; &amp;nbsp; int wczytana_liczba_wierzcholkow = 0;
&amp;nbsp; &amp;nbsp; long long wczytane_x = 0;
&amp;nbsp; &amp;nbsp; long long wczytane_y = 0;
&amp;nbsp; &amp;nbsp; double min_promien = 0;
&amp;nbsp; &amp;nbsp; double odleglosc = 0;
&amp;nbsp; &amp;nbsp; long long max_zysk = 0;
&amp;nbsp; &amp;nbsp; long long zysk = 0;
&amp;nbsp; &amp;nbsp; long long zasieg = 0;
&amp;nbsp; &amp;nbsp; vector&amp;lt;Wielokat&amp;gt; wielokaty;

&amp;nbsp; &amp;nbsp; cin &amp;gt;&amp;gt; n &amp;gt;&amp;gt; k;

&amp;nbsp; &amp;nbsp; for (int i = 0; i &amp;lt; n; ++i)
&amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cin &amp;gt;&amp;gt; wczytana_liczba_wierzcholkow &amp;gt;&amp;gt; wczytana_nagroda;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; min_promien = 0;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (int j = 0; j &amp;lt; wczytana_liczba_wierzcholkow; ++j)
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cin &amp;gt;&amp;gt; wczytane_x &amp;gt;&amp;gt; wczytane_y;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; odleglosc = sqrt(pow(wczytane_x,2) + pow(wczytane_y,2));
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; min_promien = max(min_promien,odleglosc);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; wielokaty.push_back({wczytana_nagroda,ceil(min_promien)});
&amp;nbsp; &amp;nbsp; }

&amp;nbsp; &amp;nbsp; sort(wielokaty.begin(),wielokaty.end());

/*
&amp;nbsp; &amp;nbsp; for (auto i : wielokaty)
&amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cout &amp;lt;&amp;lt; &quot;Nagroda: &quot; &amp;lt;&amp;lt; i.nagroda &amp;lt;&amp;lt; &quot; potrzebny promien: &quot; &amp;lt;&amp;lt; i.potrzebny_promien &amp;lt;&amp;lt; endl;
&amp;nbsp; &amp;nbsp; }
&amp;nbsp; &amp;nbsp; cout &amp;lt;&amp;lt; endl;
&amp;nbsp; &amp;nbsp; */



&amp;nbsp; &amp;nbsp; for (int i = 0; i &amp;lt; n; ++i)
&amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Najpierw zlozonnosc kwadratowa dla testu czy ok, potem easy do logarytmicznej.
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; zysk = 0;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (int j = 0; j &amp;lt;= i; ++j)
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; zysk += wielokaty[j].nagroda; // Tu mozna sumy prefiksowe.
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (wielokaty[i].potrzebny_promien % k != 0)
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; zasieg = (wielokaty[i].potrzebny_promien / k) * k + k;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; zasieg = wielokaty[i].potrzebny_promien;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; long long ile_razy_zwiekszyc = zasieg / k;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; long long koszt_utrzymania = (0 + ile_razy_zwiekszyc-1) * (ile_razy_zwiekszyc) / 2; // Suma ciagu od 0 do ile_razy_zwiekszyc -1

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; zysk -= koszt_utrzymania;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cout &amp;lt;&amp;lt; &quot;Koszt utrzymania: &quot; &amp;lt;&amp;lt; koszt_utrzymania &amp;lt;&amp;lt; endl;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cout &amp;lt;&amp;lt; &quot;Potrzebny zasieg: &quot; &amp;lt;&amp;lt; zasieg &amp;lt;&amp;lt; endl;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cout &amp;lt;&amp;lt; &quot;Zysk: &quot; &amp;lt;&amp;lt; zysk &amp;lt;&amp;lt; endl;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cout &amp;lt;&amp;lt; endl;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; max_zysk = max(max_zysk,zysk);
&amp;nbsp; &amp;nbsp; }
&amp;nbsp; &amp;nbsp; cout &amp;lt;&amp;lt; max_zysk;
&amp;nbsp; &amp;nbsp; return 0;
}

&lt;/pre&gt;



&lt;p&gt;Z góry dziękuję za wszystkie odpowiedzi!&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/565094/zadanie-centrala-telefoniczna-oig</guid>
<pubDate>Thu, 21 Apr 2022 21:27:52 +0000</pubDate>
</item>
<item>
<title>Zadanie warsztaty OIG</title>
<link>https://forum.pasja-informatyki.pl/564459/zadanie-warsztaty-oig</link>
<description>Cześc,jakicz czas temu napotkałem się na zadanie warsztaty z 4 edycji OIG - link szkopul: &lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://szkopul.edu.pl/problemset/problem/75WTu9ZZJlfrT_dO204-8djk/site/?key=statement&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://szkopul.edu.pl/problemset/problem/75WTu9ZZJlfrT_dO204-8djk/site/?key=statement&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Wtedy nie umiałem go zrobić, teraz do niego wróciłem i łącznie poświęciłem na nie ponad 15 godzin, i jedyne co udało mi się to napisać bruta w O(n*m) poprostu za każdym razem zmieniając wartości samochodów wartego 27pkt.&lt;br /&gt;
&lt;br /&gt;
Ma ktoś pomysł jak można podejśc do tego zadania?&lt;br /&gt;
&lt;br /&gt;
Z góry dziękuję za pomoc!</description>
<category>Algorytmy</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/564459/zadanie-warsztaty-oig</guid>
<pubDate>Sun, 10 Apr 2022 12:50:29 +0000</pubDate>
</item>
<item>
<title>Zadania OIG Książka Materiały</title>
<link>https://forum.pasja-informatyki.pl/564211/zadania-oig-ksiazka-materialy</link>
<description>Czy wiecie może, gdzie mogę znaleźć zadania z Olimpiady informatycznej gimnazjalistów? Przez ostatnie pół roku przerobiłem zadania z pierwszych 6 edycji na platformie szkopuł, jednak ich tam nie ma więcej. Przerobiłem 1,2 etapy i łatwiejsze zad z 3 etapów. Znacie może jakąś książkę, książeczki czy stronę z zbiorem zadań z późniejszych edycji? Teraz przygotowywuje się do finału OIJ, a praca z wcześniejszymi edycjami dała mi duży progres. (wiem że mogę robić też OI)</description>
<category>Algorytmy</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/564211/zadania-oig-ksiazka-materialy</guid>
<pubDate>Tue, 05 Apr 2022 17:13:56 +0000</pubDate>
</item>
<item>
<title>Problem z zadaniem Nawiasy OIG</title>
<link>https://forum.pasja-informatyki.pl/561672/problem-z-zadaniem-nawiasy-oig</link>
<description>Cześć.&lt;br /&gt;
&lt;br /&gt;
Robię zadanie z 3 etapu OIG Nawiasy - LINK: &lt;a href=&quot;https://szkopul.edu.pl/problemset/problem/t_f7jgsXWN9MO7z6BvjvaIr7/site/?key=statement&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://szkopul.edu.pl/problemset/problem/t_f7jgsXWN9MO7z6BvjvaIr7/site/?key=statement&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Bardzo długo głowiłem się nad poprawą algorytmu. Czasowo się zgadza, czasami dostaję złe odpowiedzi przez co niepełna ilość pkt. &lt;br /&gt;
&lt;br /&gt;
Mój kod:&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;stack&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ios_base::sync_with_stdio(0);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cin.tie(0);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout.tie(0);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;long long n = 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;long long licznik = 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;long long licznik_lewo = 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string ciag;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stack&amp;lt;char&amp;gt;nawiasy;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cin &amp;gt;&amp;gt; n &amp;gt;&amp;gt; ciag;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (int i = 0; i &amp;lt; n; i++)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (ciag[i] == '(')&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nawiasy.push('(');&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (!nawiasy.empty())&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;licznik++;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nawiasy.pop();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (nawiasy.empty())&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;licznik += licznik_lewo;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;licznik_lewo++;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;licznik_lewo = 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//cout &amp;lt;&amp;lt; &amp;quot;I: &amp;quot; &amp;lt;&amp;lt; licznik_lewo &amp;lt;&amp;lt; endl;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//cout &amp;lt;&amp;lt; &amp;quot;Licznik: &amp;quot; &amp;lt;&amp;lt; licznik &amp;lt;&amp;lt; endl;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&amp;quot;%d&amp;quot;,licznik);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Ma ktoś jakiś pomysł gdzie zrobiłem błąd?&lt;br /&gt;
&lt;br /&gt;
Z góry dziękuję za odpowiedzi.</description>
<category>Algorytmy</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/561672/problem-z-zadaniem-nawiasy-oig</guid>
<pubDate>Thu, 24 Feb 2022 13:28:01 +0000</pubDate>
</item>
<item>
<title>Zadanie Ciąg [OIG]</title>
<link>https://forum.pasja-informatyki.pl/511283/zadanie-ciag-oig</link>
<description>

&lt;p&gt;Mam takie zadanie &lt;a rel=&quot;nofollow&quot; href=&quot;https://szkopul.edu.pl/problemset/problem/JcJfB1VlW4cFdrCI6yDcQig0/site/?key=statement&quot;&gt;Ciąg&lt;/a&gt;
&lt;br&gt;
Jedyne co udało mi się zrobić to program do generowania tego ciągu w formacie (ilosc_wystapien, liczba)&lt;/p&gt;



&lt;pre class=&quot;brush:python;&quot;&gt;
def f():
    tab = [[] for i in range(100)]
    tab[1].append((1, 1))
    tab[2] = [(2, 2), (2, 3)]
    tab[3] = [(3, 4), (3, 5)]
    wiersz, i = 3, 6
    while wiersz &amp;lt; 10:
        for tup in tab[wiersz]:
            for j in range(tup[0]):
                tab[tup[1]].append((tup[1], i))
                i += 1
        wiersz += 1
    for i in tab:
        print(i)
f()&lt;/pre&gt;



&lt;p&gt;Nie mam pojęcia jak to rozwiązać&lt;/p&gt;</description>
<category>Algorytmy</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/511283/zadanie-ciag-oig</guid>
<pubDate>Sun, 11 Oct 2020 14:21:30 +0000</pubDate>
</item>
<item>
<title>Zadanie centrala telefoniczna [układ kartezjański]</title>
<link>https://forum.pasja-informatyki.pl/511141/zadanie-centrala-telefoniczna-uklad-kartezjanski</link>
<description>

&lt;p&gt;Mam takie zadanie &lt;a rel=&quot;nofollow&quot; href=&quot;https://szkopul.edu.pl/problemset/problem/ocGBMr4-sFMy6iEUQ6cZ6gNW/site/?key=statement&quot;&gt;Centrala telefoniczna&lt;/a&gt;
&lt;br&gt;
To mój kod&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &amp;lt;bits/stdc++.h&amp;gt;

using namespace std;

const long long INF = 1000000000;

const pair&amp;lt;int, int&amp;gt; TOWER_POS = {0, 0};

#define ll long long

ll calc_distance(pair&amp;lt;int, int&amp;gt; a, pair&amp;lt;int, int&amp;gt; b){
    return (a.first - b.first) * (a.first - b.first) + (a.second - b.second) * (a.second - b.second); //bez pierwiatkowania aby uniknac bledow
}

class House{
public:
    int profit;
    ll distance = 0;

    void load(){
        int points;
        pair&amp;lt;int, int&amp;gt; point;

        cin &amp;gt;&amp;gt; points &amp;gt;&amp;gt; profit;

        for(int i = 0; i &amp;lt; points; i++){
            cin &amp;gt;&amp;gt; point.first &amp;gt;&amp;gt; point.second;
            distance = max(distance, calc_distance(point, TOWER_POS));
        }
    }

    bool operator&amp;lt;(House &amp;amp; h){
        return this-&amp;gt;distance &amp;lt; h.distance;
    }
};

class City{
    vector&amp;lt;House&amp;gt; houses;
    ll max_profit = 0;
    int multiplier;
public:
    void load(){
        int number_of_houses;
        cin &amp;gt;&amp;gt; number_of_houses &amp;gt;&amp;gt; multiplier;

        houses.resize(number_of_houses);

        for (int i = 0; i &amp;lt; number_of_houses; i++){
            houses[i].load();
        }
    }
    /*
    wersja z liczbami zmiennoprzecinkowymi
    ll calc_min_tower_hight(House &amp;amp; house){
        return ceil(sqrt((long double)house.distance) / multiplier);
    }
    */ 
    ll calc_min_tower_hight(House &amp;amp; house){
        ll left = 0;
        ll right = house.distance;

        while (left &amp;lt; right){
            ll mid = (left + right) / 2;
            if ((mid * multiplier) * (mid * multiplier) &amp;lt; house.distance)
                left = mid + 1;
            else
                right = mid;
        }

        return left;
    }

    void calc_max_profit(){
        ll profits, costs;
        profits = 0;

        sort(houses.begin(), houses.end());

        for (House house : houses){
            profits += house.profit;
            ll min_tower_hight = calc_min_tower_hight(house);
            costs = ((min_tower_hight-1) * (min_tower_hight)) / 2; // ze wzoru (n + (n+1)) / 2
            max_profit = max(max_profit, profits - costs);
        }
    }

    void show_max_profit(){
        cout &amp;lt;&amp;lt; max_profit;
    }
};

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(nullptr);
    City city;
    city.load();
    city.calc_max_profit();
    city.show_max_profit();
    return 0;
}&lt;/pre&gt;



&lt;p&gt;Przechodzi połowę testów, aby wykluczyć zupełnie liczby zmiennoprzecinkowe zmieniłem funkcje calc_min_tower_hight tak aby wyszukiwaniem binarnym znalazła tą minimalną wysokość wieży, niestety po zmianie jest tylko więcej błędnych wyników, co robię źle ?
&lt;br&gt;

&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://szkopul.edu.pl/problemset/problem/ocGBMr4-sFMy6iEUQ6cZ6gNW/site/?key=submit&quot;&gt;Tutaj testuje&lt;/a&gt;&lt;/p&gt;</description>
<category>Algorytmy</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/511141/zadanie-centrala-telefoniczna-uklad-kartezjanski</guid>
<pubDate>Sat, 10 Oct 2020 12:24:28 +0000</pubDate>
</item>
<item>
<title>Opodwiedź do zadania Skrzaty</title>
<link>https://forum.pasja-informatyki.pl/508747/opodwiedz-do-zadania-skrzaty</link>
<description>

&lt;p&gt;Mam takie zadanie:&lt;/p&gt;



&lt;p&gt;Skrzaty&lt;/p&gt;



&lt;p&gt;Limit pamięci: 64 MB&lt;/p&gt;



&lt;p&gt;Zły smok Bitol najechał krainę skrzatów i wziął w niewolę jej mieszkańców. Przydzielił każdemu z &lt;img src=&quot;https://szkopul.edu.pl/problemset/problem/scoicMxbX0XQxNXG9Kl9qBNh/site/images/OIG6/skr-tex.1.png&quot; alt=&quot;image&quot;&gt; skrzatów inne stanowisko pracy i, samemu ległszy na stercie skradzionych kosztowności, jął leniwie nadzorować ich mozolne trudy.&lt;/p&gt;



&lt;p&gt;Jako że Bitol jest wyjątkowo gnuśnym smokiem, nie obserwuje jednocześnie wszystkich poddanych. Zamiast tego cały czas przygląda się uważnie tylko skrzatom pracującym przy pewnej grupie stanowisk. W tym czasie wszystkie nieobserwowane przezeń skrzaty mogą spotykać się oraz dowolnie zamieniać się miejscami (Bitol nie jest w stanie zapamiętać, przy którym stanowisku pracował który skrzat). Co godzinę smok obraca głowę i zaczyna obserwować inny podzbiór skrzatów.&lt;/p&gt;



&lt;p&gt;Skrzat Bajtazyl, któremu smok przydzielił stanowisko &lt;img src=&quot;https://szkopul.edu.pl/problemset/problem/scoicMxbX0XQxNXG9Kl9qBNh/site/images/OIG6/skr-tex.2.png&quot; alt=&quot;image&quot;&gt;, chce zmobilizować towarzyszy niedoli do przeciwstawienia się Bitolowi. W tym celu musi najpierw spotkać się z sędziwym skrzatem Bajtomirem, któremu smok przydzielił stanowisko &lt;img src=&quot;https://szkopul.edu.pl/problemset/problem/scoicMxbX0XQxNXG9Kl9qBNh/site/images/OIG6/skr-tex.3.png&quot; alt=&quot;image&quot;&gt;. Przed Bajtazylem stoi zatem wyzwanie: odpowiednio zamieniając się z innymi skrzatami miejscami, winien jak najszybciej doprowadzić do sytuacji, w której on sam, ani stanowisko przy którym stoi aktualnie nasz śmiałek, ani stanowisko &lt;img src=&quot;https://szkopul.edu.pl/problemset/problem/scoicMxbX0XQxNXG9Kl9qBNh/site/images/OIG6/skr-tex.4.png&quot; alt=&quot;image&quot;&gt; nie byłyby obserwowane przez smoka.&lt;/p&gt;



&lt;p&gt;Twoim zadaniem jest ustalenie, kiedy najwcześniej może dojść do spotkania. Na szczęście wiadomo, że za &lt;img src=&quot;https://szkopul.edu.pl/problemset/problem/scoicMxbX0XQxNXG9Kl9qBNh/site/images/OIG6/skr-tex.5.png&quot; alt=&quot;image&quot;&gt; godzin smok uśnie i wówczas wszystkie skrzaty będą w stanie komunikować się swobodnie.&lt;/p&gt;



&lt;p&gt;Wejście&lt;/p&gt;



&lt;p&gt;W pierwszym wierszu standardowego wejścia znajdują się dwie liczby całkowite &lt;img src=&quot;https://szkopul.edu.pl/problemset/problem/scoicMxbX0XQxNXG9Kl9qBNh/site/images/OIG6/skr-tex.6.png&quot; alt=&quot;image&quot;&gt; i &lt;img src=&quot;https://szkopul.edu.pl/problemset/problem/scoicMxbX0XQxNXG9Kl9qBNh/site/images/OIG6/skr-tex.7.png&quot; alt=&quot;image&quot;&gt; (&lt;img src=&quot;https://szkopul.edu.pl/problemset/problem/scoicMxbX0XQxNXG9Kl9qBNh/site/images/OIG6/skr-tex.8.png&quot; alt=&quot;image&quot;&gt;) oznaczające odpowiednio liczbę skrzatów oraz liczbę godzin pozostałych do czasu, aż Bitol zaśnie. W następnych &lt;img src=&quot;https://szkopul.edu.pl/problemset/problem/scoicMxbX0XQxNXG9Kl9qBNh/site/images/OIG6/skr-tex.9.png&quot; alt=&quot;image&quot;&gt; wierszach znajdują się opisy grup stanowisk obserwowanych przez smoka w kolejnych godzinach, po jednym w wierszu. Na opis &lt;img src=&quot;https://szkopul.edu.pl/problemset/problem/scoicMxbX0XQxNXG9Kl9qBNh/site/images/OIG6/skr-tex.10.png&quot; alt=&quot;image&quot;&gt;-tej grupy stanowisk składa się liczba całkowita &lt;img src=&quot;https://szkopul.edu.pl/problemset/problem/scoicMxbX0XQxNXG9Kl9qBNh/site/images/OIG6/skr-tex.11.png&quot; alt=&quot;image&quot;&gt; (&lt;img src=&quot;https://szkopul.edu.pl/problemset/problem/scoicMxbX0XQxNXG9Kl9qBNh/site/images/OIG6/skr-tex.12.png&quot; alt=&quot;image&quot;&gt;) oznaczająca liczbę obserwowanych stanowisk oraz &lt;img src=&quot;https://szkopul.edu.pl/problemset/problem/scoicMxbX0XQxNXG9Kl9qBNh/site/images/OIG6/skr-tex.13.png&quot; alt=&quot;image&quot;&gt; uporządkowanych rosnąco liczb całkowitych ze zbioru &lt;img src=&quot;https://szkopul.edu.pl/problemset/problem/scoicMxbX0XQxNXG9Kl9qBNh/site/images/OIG6/skr-tex.14.png&quot; alt=&quot;image&quot;&gt; oznaczających numery obserwowanych stanowisk. Wszystkie liczby w wierszu poodzielane są pojedynczymi odstępami.&lt;/p&gt;



&lt;p&gt;Możesz założyć, że &lt;img src=&quot;https://szkopul.edu.pl/problemset/problem/scoicMxbX0XQxNXG9Kl9qBNh/site/images/OIG6/skr-tex.15.png&quot; alt=&quot;image&quot;&gt;.&lt;/p&gt;



&lt;p&gt;Wyjście&lt;/p&gt;



&lt;p&gt;W pierwszym i jedynym wierszu standardowego wyjścia Twój program powinien wypisać jedną liczbę całkowitą ze zbioru &lt;img src=&quot;https://szkopul.edu.pl/problemset/problem/scoicMxbX0XQxNXG9Kl9qBNh/site/images/OIG6/skr-tex.16.png&quot; alt=&quot;image&quot;&gt; - najmniejszą liczbę godzin, po której Bajtazyl może dotrzeć do Bajtomira.&lt;/p&gt;



&lt;p&gt;Przykład&lt;/p&gt;



&lt;p&gt;Dla danych wejściowych:&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
5 4
3 1 3 4
2 3 5
3 1 2 3
2 1 2
&lt;/pre&gt;



&lt;p&gt;poprawną odpowiedzią jest:&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
2
&lt;/pre&gt;



&lt;p&gt;Dla danych wejściowych:&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
6 2
4 2 3 4 5
6 1 2 3 4 5 6
&lt;/pre&gt;



&lt;p&gt;poprawną odpowiedzią jest:&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
0
&lt;/pre&gt;



&lt;p&gt;Dla danych wejściowych:&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
10 4
1 1
2 9 10
7 1 3 4 7 8 9 10
2 1 10
&lt;/pre&gt;



&lt;p&gt;poprawną odpowiedzią jest:&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
4
&lt;/pre&gt;



&lt;p&gt;&lt;strong&gt;Wyjaśnienie do przykładu:&lt;/strong&gt;&lt;/p&gt;



&lt;p&gt;W pierwszym z powyższych przykładów podczas pierwszej godziny swej wyprawy Bajtazyl nie może opuścić stanowiska o numerze &lt;img src=&quot;https://szkopul.edu.pl/problemset/problem/scoicMxbX0XQxNXG9Kl9qBNh/site/images/OIG6/skr-tex.17.png&quot; alt=&quot;image&quot;&gt;, gdyż jest ono obserwowane przez smoka. Podczas drugiej godziny może on zamienić się miejscami ze skrzatem przy stanowisku o numerze &lt;img src=&quot;https://szkopul.edu.pl/problemset/problem/scoicMxbX0XQxNXG9Kl9qBNh/site/images/OIG6/skr-tex.18.png&quot; alt=&quot;image&quot;&gt;. Dzięki temu dopiero na początku trzeciej godziny smok Bitol odwróci głowę ku stanowiskom o numerach &lt;img src=&quot;https://szkopul.edu.pl/problemset/problem/scoicMxbX0XQxNXG9Kl9qBNh/site/images/OIG6/skr-tex.19.png&quot; alt=&quot;image&quot;&gt;, a Bajtazyl będzie mogł spotkać się z Bajtomirem.&lt;/p&gt;



&lt;p&gt;W drugim z powyższych przykładów do spotkania może dojść natychmiast, gdyż w pierwszej godzinie smok nie patrzy na stanowiska Bajtazyla i Bitomira.&lt;/p&gt;



&lt;p&gt;W trzecim przykładzie do spotkania może dojść dopiero wtedy, gdy Bitol uśnie&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;



&lt;p&gt;Znalazłem taki poprawny kod:
&lt;br&gt;
&amp;nbsp;&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &amp;lt;cstdlib&amp;gt;
#include &amp;lt;cstdio&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;iostream&amp;gt;

using namespace std;

struct przed {
    int p;
    int k;
};

int wbez(int a) {
    if (a &amp;gt; 0)return a;
    else return -1 * a;
}

bool czy_wsp(int *tab, int dl, vector&amp;lt;przed&amp;gt; prz[1]) {
    int ltab = 0; // licznik tablicy
    int lvec = 0; // licznik vectora
    bool wynik = false;
    int ostwprz = -1;
    for (ltab; ltab &amp;lt; dl; ltab++) {
        //DOBRA FUNKCJA
        while (true) {
            if (lvec == prz[0].size()) {
                lvec--;
                break;
            } else if (tab[ltab] &amp;gt;= prz[0][lvec].p &amp;amp;&amp;amp; tab[ltab] &amp;lt;= prz[0][lvec].k)
                break;
            else if (tab[ltab] &amp;lt; prz[0][lvec].p)
                break;
            if (ltab == 0)
                wynik = true;
            else if (-1 * tab[ltab - 1] != prz[0][lvec].k &amp;amp;&amp;amp; tab[ltab - 1] &amp;lt; 0)
                wynik = true;
            else if (tab[ltab] &amp;gt; prz[0][lvec].k &amp;amp;&amp;amp; tab[ltab - 1] &amp;lt; prz[0][lvec].k &amp;amp;&amp;amp; tab[ltab - 1] &amp;gt; 0)
                wynik = true;
            lvec++;
        }
        if (tab[ltab] &amp;gt;= prz[0][lvec].p &amp;amp;&amp;amp; tab[ltab] &amp;lt;= prz[0][lvec].k) {
            if (tab[ltab] - 1 &amp;gt;= prz[0][lvec].p &amp;amp;&amp;amp; ltab &amp;gt; 0)
                if (tab[ltab] - 1 != tab[ltab - 1] * (-1))
                    wynik = true;
            tab[ltab] *= -1;
        }
    }
    if (wbez(tab[dl - 1]) &amp;lt; prz[0][prz[0].size() - 1].k) {
        wynik = true;
    }
    for (int a = 0; a &amp;lt; dl; a++)
        if (tab[a] &amp;lt; 0)tab[a] = 0;
    return wynik;
}

void nzbior(int *tab, int dl, vector&amp;lt;przed&amp;gt; prz[1], int n) {
    vector&amp;lt;przed&amp;gt; tym;
    int ltab;
    przed pom;
    pom.p = 1;
    for (int ltab = 0; ltab &amp;lt;= dl; ltab++) {
        if (ltab == 0)
            pom.p = 1;
        else
            pom.p = tab[ltab - 1] + 1;
        while (ltab != dl &amp;amp;&amp;amp; tab[ltab] == 0)
            ltab++;
        if (ltab != dl)
            pom.k = tab[ltab] - 1;
        else
            pom.k = n;
        if (pom.p &amp;lt;= pom.k) {
            tym.push_back(pom);
        }
    }
    prz[0].assign(tym.begin(), tym.begin() + tym.size());
}

int main(int argc, char *argv[]) {
    int n, m;
    scanf(&quot;%d%d&quot;, &amp;amp;n, &amp;amp;m);
    int *dl = new int[m];
    int **obs = new int *[m];
    vector&amp;lt;przed&amp;gt; prz[1];
    przed pom = {1, 1};
    prz[0].push_back(pom);
    int i;
    bool wyn = false;
    for (i = 0; i &amp;lt; m; i++) {
        scanf(&quot;%d&quot;, &amp;amp;dl[i]);
        obs[i] = new int[dl[i]];
        for (int a = 0; a &amp;lt; dl[i]; a++)
            scanf(&quot;%d&quot;, &amp;amp;obs[i][a]);
        if (czy_wsp(obs[i], dl[i], prz)) {
            nzbior(obs[i], dl[i], prz, n);
        }
        if (prz[0][prz[0].size() - 1].k == n) {
            cout &amp;lt;&amp;lt; i;
            wyn = true;
            break;
        }
    }

    if (!wyn)
        cout &amp;lt;&amp;lt; m;

    return EXIT_SUCCESS;
}&lt;/pre&gt;



&lt;p&gt;spróbowałem sam coś napisać czytelniej i trochę w inny sposób, jednak mój kod nie przechodzi wszytkich testów, czy ktoś mógłby mi wytłumaczyć jak rozwiązać to zadanie i gdzie robię błąd ?&lt;/p&gt;



&lt;p&gt;Mój kod:&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &amp;lt;bits/stdc++.h&amp;gt;

using namespace std;

class Interval{
public:
    int beg;
    int end;

    Interval(int beg=0, int end=0){
        this-&amp;gt;beg = beg;
        this-&amp;gt;end = end;
    }
};

bool can_meet(vector&amp;lt;int&amp;gt; &amp;amp; drag_watch, int d_w_len, vector&amp;lt;Interval&amp;gt; &amp;amp; poss_in, int p_i_len){
    if (drag_watch[d_w_len - 1] &amp;lt; poss_in[p_i_len - 1].end)
        return true;

    int p_i_iter = 0;

    for (int d_w_iter = 0; d_w_iter &amp;lt; d_w_len; d_w_iter++){
        while (p_i_iter &amp;lt; p_i_len){
            if (drag_watch[d_w_iter] &amp;gt;= poss_in[p_i_iter].beg &amp;amp;&amp;amp; drag_watch[d_w_iter] &amp;lt;= poss_in[p_i_iter].end){
                if (drag_watch[d_w_iter] - 1 &amp;gt;= poss_in[p_i_iter].beg &amp;amp;&amp;amp; d_w_iter &amp;gt; 0)
                    if (drag_watch[d_w_iter] - 1 != abs(drag_watch[d_w_iter - 1]))
                        return true;
                drag_watch[d_w_iter] *= -1;
            }
            else if (drag_watch[d_w_iter] &amp;gt; poss_in[p_i_iter].beg){
                if (d_w_iter == 0)
                    return true;
                if (abs(drag_watch[d_w_iter - 1]) != poss_in[p_i_iter].end &amp;amp;&amp;amp; drag_watch[d_w_iter - 1] &amp;lt; 0)
                    return true;
                else if (drag_watch[d_w_iter] &amp;gt; poss_in[p_i_iter].end &amp;amp;&amp;amp;
                         drag_watch[d_w_iter - 1] &amp;lt; poss_in[p_i_iter].end &amp;amp;&amp;amp; drag_watch[d_w_iter - 1] &amp;gt; 0)
                    return true;
            }
            p_i_iter++;
        }
        p_i_iter--;
    }
    return false;
}

void select_all_belonging_to_poss_intervals(vector&amp;lt;int&amp;gt; &amp;amp; drag_watch, int d_w_len, vector&amp;lt;Interval&amp;gt; &amp;amp; poss_in, int p_i_len){
    int p_i_iter = 0;
    for (int d_w_iter = 0; d_w_iter &amp;lt; d_w_len; d_w_iter++){
        while (p_i_iter &amp;lt; p_i_len){
            if (drag_watch[d_w_iter] &amp;lt; 0 || drag_watch[d_w_iter] &amp;gt;= poss_in[p_i_iter].beg &amp;amp;&amp;amp; drag_watch[d_w_iter] &amp;lt;= poss_in[p_i_iter].end){
                drag_watch[d_w_iter] = 0;
                break;
            }
            p_i_iter++;
        }
    }
}

void update_poss_inters(vector&amp;lt;int&amp;gt; &amp;amp; drag_watch, int d_w_len, vector&amp;lt;Interval&amp;gt; &amp;amp; poss_in, int p_i_len, int last_gnome){
    poss_in.clear();
    select_all_belonging_to_poss_intervals(drag_watch, d_w_len, poss_in, p_i_len);
    if (drag_watch[d_w_len - 1] != last_gnome){
        poss_in.push_back(Interval(1, last_gnome));
        return;
    }
    Interval helper;
    int d_w_iter = 0;
    while (d_w_iter &amp;lt;= d_w_len){
        if (d_w_iter == 0)
            helper.beg = 1;
        else
            helper.beg = drag_watch[d_w_iter - 1] + 1;
        while (d_w_iter != d_w_len &amp;amp;&amp;amp; drag_watch[d_w_iter] == 0)
            d_w_iter++;
        if (d_w_iter != d_w_len)
            helper.end = drag_watch[d_w_iter] - 1;
        else
            helper.end = last_gnome;
        if (helper.beg &amp;lt;= helper.end)
            poss_in.push_back(helper);
        d_w_iter++;
    }

}



int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(nullptr);
    int n, m, k, ans;
    cin &amp;gt;&amp;gt; n &amp;gt;&amp;gt; m;
    ans = m;
    vector&amp;lt;vector&amp;lt;int&amp;gt;&amp;gt; dragon_watches(m);
    vector&amp;lt;Interval&amp;gt; poss_inters;
    poss_inters.push_back(Interval(1,1));
    for (int i = 0; i &amp;lt; m; i++){
        cin &amp;gt;&amp;gt; k;
        dragon_watches[i].reserve(k);
        for (int j = 0; j &amp;lt; k; j++)
            cin &amp;gt;&amp;gt; dragon_watches[i][j];
        if (can_meet(dragon_watches[i], k, poss_inters, poss_inters.size()))
            update_poss_inters(dragon_watches[i], k, poss_inters, poss_inters.size(), n);
        if (poss_inters[poss_inters.size() - 1].end == n){
            ans = i;
            break;
        }

    }
    cout &amp;lt;&amp;lt; ans;
  return 0;
}
&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Algorytmy</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/508747/opodwiedz-do-zadania-skrzaty</guid>
<pubDate>Fri, 18 Sep 2020 15:25:58 +0000</pubDate>
</item>
<item>
<title>Zadanie konkursowe z Olimpiady Informatycznej Gimnazjalistów 2016/2017 - problem z rozwiązaniem</title>
<link>https://forum.pasja-informatyki.pl/447761/zadanie-konkursowe-olimpiady-informatycznej-gimnazjalistow-problem-rozwiazaniem</link>
<description>

&lt;p&gt;Witam,&lt;/p&gt;



&lt;p&gt;Mam problem z następującym zadaniem: &lt;a href=&quot;http://www.cauchy.pl/oig-2/olimpiada-informatyczna-gimnazjalistow-11-2016-2017/ksiegowy/ksiegowy.pdf&quot; rel=&quot;nofollow&quot;&gt;Link do zadania w PDF&lt;/a&gt;. Nie mam pomysłu jak to rozwiązać, już kombinuję od 4h... Mógłby ktoś przedstawić rozwiązanie (najlepiej w Pythonie)&amp;nbsp; i pokazać jak do tego doszedł / nakierować mnie. Z góry dziękuję.&lt;/p&gt;</description>
<category>Algorytmy</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/447761/zadanie-konkursowe-olimpiady-informatycznej-gimnazjalistow-problem-rozwiazaniem</guid>
<pubDate>Mon, 02 Sep 2019 11:25:59 +0000</pubDate>
</item>
<item>
<title>Płot - zadanie z XII OIG</title>
<link>https://forum.pasja-informatyki.pl/411721/plot-zadanie-z-xii-oig</link>
<description>Cześć,&lt;br /&gt;
&lt;br /&gt;
niedawno natknąłem się na zadanie z XII Olimpiady Informatycznej Gimnazjalistów o nazwie &amp;quot;płot&amp;quot;. Chodzi w nim o to, że na wejściu podaną mamy liczbę n (1 &amp;lt;= n &amp;lt;= 200 000), a następnie n liczb, z których każda jest nie mniejsza od 1 i nie większa od 10^6. Trzeba usunąć niektóre liczby, tak aby suma pozostałych była jak największa i aby wartości pozostawionych liczb na zmianę rosły i malały.&lt;br /&gt;
&lt;br /&gt;
Np. dla danych wejściowych:&lt;br /&gt;
&lt;br /&gt;
6&lt;br /&gt;
&lt;br /&gt;
7 5 4 6 6 5&lt;br /&gt;
&lt;br /&gt;
rozwiązaniem jest 23, gdyż wystarczy usunąć 4 i jedno 6.&lt;br /&gt;
&lt;br /&gt;
Myślałem nad tym zadaniem godzinę i nie mam żadnego pomysłu. Patrząc na zakres wartości n, wydaję mi się, że rozwiązanie może mieć złożoność około O(n log n), ale nie jestem pewien. Bardzo prosiłbym o nakierowanie na poprawne rozwiązanie.</description>
<category>Algorytmy</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/411721/plot-zadanie-z-xii-oig</guid>
<pubDate>Mon, 04 Feb 2019 15:03:16 +0000</pubDate>
</item>
<item>
<title>Algorytmika ,zadanie oig</title>
<link>https://forum.pasja-informatyki.pl/372559/algorytmika-zadanie-oig</link>
<description>

&lt;p&gt;Cześć!&lt;/p&gt;



&lt;p&gt;Mam problem z zadaniem&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;a href=&quot;https://szkopul.edu.pl/problemset/problem/jvPBZm53yfvDkYKuuxbQvjNe/site/?key=statement&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://szkopul.edu.pl/problemset/problem/jvPBZm53yfvDkYKuuxbQvjNe/site/?key=statement&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;na początku wszystkie testy przechodzą bez problemu z czasem 0.00 a potem nagle wszędzie czas przekroczony&amp;nbsp;&lt;/p&gt;



&lt;p&gt;nie mogę nigdzie znaleźć błędu , mógłby ktoś nakierować co jest nie tak ?&amp;nbsp;&lt;/p&gt;



&lt;p&gt;Mój kod poniżej:
&lt;br&gt;
&amp;nbsp;&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
// ConsoleApplication1.cpp: definiuje punkt wejścia dla aplikacji konsolowej.
//

#include &quot;stdafx.h&quot;
#include &amp;lt;iostream&amp;gt;
#include&amp;lt;string&amp;gt;
using namespace std;
string nowyString(string staryString,int ileZnakow)
{
	string nowyS=&quot;&quot;;
	for (int i = 0; i &amp;lt; staryString.size()-1; i++)
	{
		nowyS += staryString[i];
	}
	return nowyS;
}
int main()
{
	
	
		int ileZnakow;
		cin &amp;gt;&amp;gt; ileZnakow;

		string  slowo;
		cin &amp;gt;&amp;gt; slowo;
		string obecnyPrefiks = &quot;&quot;;
		int poziom = 0;
		int max_poziom = 0;
		bool czyZle = false;
		for (int i = 0; i &amp;lt; ileZnakow; i++)
		{
			//cout &amp;lt;&amp;lt; i &amp;lt;&amp;lt; endl;
			if (slowo[i] == '(' || slowo[i] == '{' || slowo[i] == '[')
			{
				obecnyPrefiks += slowo[i];
				poziom++;
			}
			if (slowo[i] == ')' || slowo[i] == '}' || slowo[i] == ']')
			{
				if (i == 0)
				{
					czyZle = true;
					break;
				}
				//cout &amp;lt;&amp;lt; slowo[i] &amp;lt;&amp;lt; endl;
					
				if (obecnyPrefiks != &quot;&quot;)
				{
					if (slowo[i] = ')'&amp;amp;&amp;amp;obecnyPrefiks[poziom - 1] == '(' || slowo[i] == '}' &amp;amp;&amp;amp; obecnyPrefiks[poziom - 1] == '{' || slowo[i] == ']' &amp;amp;&amp;amp; obecnyPrefiks[poziom - 1] == '[')
					{
						//cout &amp;lt;&amp;lt; slowo[i-1] &amp;lt;&amp;lt; &quot; &quot; &amp;lt;&amp;lt; slowo[i] &amp;lt;&amp;lt; endl;
						obecnyPrefiks = nowyString(obecnyPrefiks, ileZnakow);

						poziom--;
					}
				}
				else
				{
					czyZle = true;
					break;
				}
				
				//cout &amp;lt;&amp;lt; obecnyPrefiks &amp;lt;&amp;lt; endl;
			}
			if (poziom &amp;gt; max_poziom)
				max_poziom = poziom;
		}
		if (poziom != 0|| czyZle==true)
			cout &amp;lt;&amp;lt; &quot;NIE&quot;;
		else
			cout &amp;lt;&amp;lt; max_poziom;
	
    return 0;
}

&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/372559/algorytmika-zadanie-oig</guid>
<pubDate>Sun, 12 Aug 2018 09:18:43 +0000</pubDate>
</item>
<item>
<title>Zadanie OIG - Kafelki</title>
<link>https://forum.pasja-informatyki.pl/368671/zadanie-oig-kafelki</link>
<description>

&lt;p&gt;Hej!&lt;/p&gt;



&lt;p&gt;Rozwiązywałem ostatnio&amp;nbsp;zadanie&amp;nbsp;pt. Kafelki z ubiegłorocznej edycji Olimpiady informatycznej gimnazjalistów&lt;/p&gt;



&lt;p&gt;Treść zadania:&lt;/p&gt;



&lt;pre class=&quot;brush:plain;&quot;&gt;
Piotrek jest nowym administratorem systemu Olimpiady Informatycznej 
Gimnazjalistów. Jednym z jego obo- wiązków jest opieka nad serwerownią. 
Pomieszczenie musi spełnić szereg kryteriów zarówno technicznych, jak i 
estetycznych. Aby zapewnić poprawne działanie serwerów, ważne jest, aby podłoga 
została pokryta no- woczesnymi kafelkami chłodzącymi.
Piotrek może wybrać jeden z n rodzajów kwadratowych kafelków. Zakładamy, że 
kafelków danego rodza- ju można kupić dowolnie wiele, ale nie wolno w jakikolwiek 
sposób zmieniać ich wymiarów. Piotrek musi rozpatrzyć wszystkie rodzaje kafelków, 
którymi da się całkowicie wyłożyć podłogę i zdecydować, które kupi. Niestety, 
nigdy nie był w serwerowni, i nie wie, jakie ma ona wymiary. Pomóż młodemu 
administratorowi i napisz program, który dla zadanych wymiarów podłogi w 
serwerowni wyliczy, ile różnych rodzajów kafelków może użyć.&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;Wejście:&lt;/p&gt;



&lt;pre class=&quot;brush:plain;&quot;&gt;
W pierwszym wierszu standardowego wejścia zapisano dwie liczby naturalne n i m 
(1 &amp;lt;= n, m &amp;lt;= 200 000), oznaczające odpowiednio liczbę rodzajów kafelków i liczbę 
zapytań o wymiary serwerowni. W drugim wierszu zapisano n liczb naturalnych xi 
(1 &amp;lt;= xi &amp;lt;= 106), oznaczających długość boku i-tego rodzaju kafelków. 
W ko-lejnych m&amp;nbsp;wierszach zapisano po jednej parze liczb naturalnych ai, bi (1 &amp;lt;= ai, bi &amp;lt;= 106),
oznaczających zadane wymiary. W testach wartych 50% punktów możesz założyć,
&amp;nbsp;że podłoga serwerowni jest zawsze kwadratem (ai = bi).
&lt;/pre&gt;



&lt;p&gt;Wyjście:&lt;/p&gt;



&lt;pre class=&quot;brush:plain;&quot;&gt;
W i-tym wierszu wyjścia powinna znaleźć się jedna liczba naturalna, oznaczająca 
liczbę różnych rodzajów kafelków, którymi można wyłożyć podłogę o wymiarach 
zadanych w i-tym zapytaniu.
&lt;/pre&gt;



&lt;p&gt;Najprostsze rozwiązanie problemu to po prostu sprawdzenie czy dany rozmiar pokoju jest podziely bez reszty przez i-ty kafelek, ale będzie to rozwiązanie o złożoności m * n =&amp;gt; ok. O(n^2), więc w tego typu konkursie nie byłoby to zbyt wysoko punktowane.&lt;/p&gt;



&lt;p&gt;Wymyśliłem, że można by to zoptymalizować w taki sposób, że tablicę z wartościami kafelków sortujemy rosnąco quicksortem, i sprawdzamy czy NWD wymiarów pokoju jest podzielny przez i-ty kafelek iterując do czasu aż i-ty kafelek jest mniejszy bądź równy NWD wymiarów pokoju. Jest jednak pewien problem. Mianowicie przy najbardiej pesymistycznym założeniu (czyli takim, że wszystkie kafelki będą mniejsze od NWD każdego pokoju) ten algorytm będzie jeszcze mniej wydajny niż najprostszy o którym wspomniałem wyżej.&lt;/p&gt;



&lt;p&gt;Moje pytanie jest następujące - czy w takim przypadku warto &quot;zaryzykować&quot;, że zestawy danych będą w miarę optymistyczne i algorytm będzie działał znacząco szybciej niż O(n^2)? Dzięki za pomoc ;)&lt;/p&gt;</description>
<category>Algorytmy</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/368671/zadanie-oig-kafelki</guid>
<pubDate>Wed, 25 Jul 2018 23:29:23 +0000</pubDate>
</item>
<item>
<title>Problem z zadaniem z olimpiady informatycznej (brak pomysłu)</title>
<link>https://forum.pasja-informatyki.pl/332270/problem-z-zadaniem-z-olimpiady-informatycznej-brak-pomyslu</link>
<description>Dzień dobry,&lt;br /&gt;
&lt;br /&gt;
rozwiązuje sobie zadania z roznych olimpiad informatycznych i natknąłem się na zadanie, którego nie potrafię rozwiązać. Męczyłem się nad nim dosyć długo i nic mi nie przychodzi do głowy. Jeśli ktoś miałby jakiś pomysł to będę bardzo wdzięczny. Zadanie podsyłam tutaj: &lt;a href=&quot;http://www94.zippyshare.com/v/nknBg25W/file.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://www94.zippyshare.com/v/nknBg25W/file.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Pozdrawiam serdecznie</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/332270/problem-z-zadaniem-z-olimpiady-informatycznej-brak-pomyslu</guid>
<pubDate>Mon, 05 Mar 2018 17:51:48 +0000</pubDate>
</item>
<item>
<title>Algorytmika | Problem - Podział ciągu na odpowiednie podciągi</title>
<link>https://forum.pasja-informatyki.pl/214409/algorytmika-problem-podzial-ciagu-na-odpowiednie-podciagi</link>
<description>Witam,&lt;br /&gt;
Ostatnio zajmuję się algorytmiką i mam tu zadanie, do którego sam odpowiedzi nie znajdę. Nie oczekuję koniecznie gotowego sposobu. Czy zna się ktoś na tym i mógłby mi wytłumaczyć co w takich zadaniach się robi i dlaczego?&lt;br /&gt;
&lt;br /&gt;
Zadanie:&lt;br /&gt;
Podziałem ciągu cyfr na sumy nazwiemy podział go na spójne podciągi, które mają tę własność, że suma cyfr w i-tym podciągu jest mniejsza bądź równa sumie cyfr w i+1-tym podciągu. Przykładowo dla ciągu ‘11157’ poprawnym podziałem jest ’11-15-7’. Twoim zadaniem, jest dla podanego ciągu, obliczyć liczbę jego różnych podziałów na sumy.&lt;br /&gt;
&lt;br /&gt;
Przykład:&lt;br /&gt;
Wejściowy ciąg: 112 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Poprawna odpowiedź: 4&lt;br /&gt;
Wejściowy ciąg: 11 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Poprawna odpowiedź: 2&lt;br /&gt;
&lt;br /&gt;
Ilość liczb w ciągu to maksymalnie 50, a każdy program ma maksymalnie 1000 zestawów testowych(ciągów do obliczenia).&lt;br /&gt;
&lt;br /&gt;
Z góry dziękuję chętnym za poświęcenie cennego czasu! :)</description>
<category>Algorytmy</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/214409/algorytmika-problem-podzial-ciagu-na-odpowiednie-podciagi</guid>
<pubDate>Mon, 09 Jan 2017 15:25:40 +0000</pubDate>
</item>
<item>
<title>Algorytmika na oig.</title>
<link>https://forum.pasja-informatyki.pl/199783/algorytmika-na-oig</link>
<description>Witam. czy ktoś może mi polecić jakieś ciekawe kursy algoritmiczne w których nauczye się zagadnień takich jak 1. Zagadnienia olimpijskie:&lt;br /&gt;
1.1 Algorytmy:&lt;br /&gt;
1.1.1. Liniowe i rozgałęzione;&lt;br /&gt;
1.1.2. Iteracyjne i rekurencyjne;&lt;br /&gt;
1.1.3. Sortowania;&lt;br /&gt;
1.2 Struktury danych:&lt;br /&gt;
1.2.1. Tablice, listy, kolejki;&lt;br /&gt;
1.2.2. Grafy proste;&lt;br /&gt;
1.3 Działania na dużych liczbach;&lt;br /&gt;
1.4 Programowanie dynamiczne;&lt;br /&gt;
1.5 Programowanie zachłanne;&lt;br /&gt;
1.6 Teoria liczb:&lt;br /&gt;
1.6.1. NWD i NWW;&lt;br /&gt;
1.6.2. Liczby pierwsze&lt;br /&gt;
&lt;br /&gt;
Kurs nie musi być polski ale aby był darmowy. Bardzo proszę o pomoc. Za każdą pomoc serdecznie dziękuję.</description>
<category>Algorytmy</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/199783/algorytmika-na-oig</guid>
<pubDate>Wed, 23 Nov 2016 21:10:47 +0000</pubDate>
</item>
<item>
<title>Przygotowania do olimpiady w gimnazjum</title>
<link>https://forum.pasja-informatyki.pl/185063/przygotowania-do-olimpiady-w-gimnazjum</link>
<description>Jestem uczniem klasy 2 gimnazjum . Moimi ulubionymi przedmiotami są fizyka, matematyka i angielski. Chce wziąć udział w 2 olimpiadach ( oig, ipb - informatyczny puchar Beskidów) Chciałbym się dowiedzieć od was co mogę zrobić aby wypaść dobrze na olimpiadzie i nauczyć się wszystkiego do stycznia. Pierwszym językiem był c#. Zrobiłem tylko do programowania obiektowego. Na konkurs wybieram c++. Jak mogę skutecznie się go nauczyć, co powtórzyć, jaką książkę do nauki wybrać , jak opanować algorytmy,jak nauczyć się rozwiązywać zadania z olimpiady, i może macie jakieś porady lub coś związanego z nauką. Za każdą pomoc serdeczne dziękuję :D</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/185063/przygotowania-do-olimpiady-w-gimnazjum</guid>
<pubDate>Wed, 05 Oct 2016 18:53:33 +0000</pubDate>
</item>
<item>
<title>Przygotowanie się do Olimpiady Informatycznej Gimnazjum</title>
<link>https://forum.pasja-informatyki.pl/127813/przygotowanie-sie-do-olimpiady-informatycznej-gimnazjum</link>
<description>

&lt;p&gt;&lt;span style=&quot;font-size:14px&quot;&gt;Jestem w 2 klasie gimnazjum z rozszerzoną iformatyką. Na lekcjach nie uczymy się prawie nic, a chciałbym coś osiągnąc w tej olimpiadzie. Przerobiłem cały kurs Zelenta i kurs na stronie&amp;nbsp;&lt;span style=&quot;font-family:arial,sans-serif&quot;&gt;cpp0x.pl/&lt;/span&gt;&lt;strong&gt;kursy&lt;/strong&gt;&lt;span style=&quot;font-family:arial,sans-serif&quot;&gt;/&lt;/span&gt;&lt;strong&gt;Kurs&lt;/strong&gt;&lt;span style=&quot;font-family:arial,sans-serif&quot;&gt;-&lt;/span&gt;&lt;strong&gt;C++&lt;/strong&gt;&lt;span style=&quot;font-family:arial,sans-serif&quot;&gt;/, ale jest to niewystarczająca wiedza do rozwiązania zadań konkursowych. Jak teraz mogę się przygotować tak, żeby w następnym roku już coś umieć?&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description>
<category>Rozwój zawodowy, nauka, praca</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/127813/przygotowanie-sie-do-olimpiady-informatycznej-gimnazjum</guid>
<pubDate>Sat, 09 Apr 2016 18:43:42 +0000</pubDate>
</item>
</channel>
</rss>