<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Forum Pasja Informatyki - Najnowsze z tagiem podciągi</title>
<link>https://forum.pasja-informatyki.pl/tag/podci%C4%85gi</link>
<description>Powered by Question2Answer</description>
<item>
<title>Zadanie podciągi arytmetyczne - obóz naukowy ilocamp</title>
<link>https://forum.pasja-informatyki.pl/580600/zadanie-podciagi-arytmetyczne-oboz-naukowy-ilocamp</link>
<description>

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



&lt;p&gt;Napisałem bruta O(N^2), na 55pkt, że idę pętlą for od 0, do n-1, i zakładam, że ten element jest środkowy(j), i dla każdego elementu środkowego, idę 2 pętlą for, po idx-ach j+1, j+2, j+3... i zakładam, że on jest tym prawym, a ten lewy wyszukuję z statystyk, (znaczę, sobie wcześniej jakie odwiedziłem), przekształcając:&lt;/p&gt;



&lt;pre class=&quot;brush:plain;&quot;&gt;
A_j - A_i = A_k - A_j =&amp;gt; A_i = 2*A_j - A_k&lt;/pre&gt;



&lt;p&gt;Gdzie A_i, to element lewy, A_j to element środkowy, A_k to element prawy.&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, wczytana_liczba = 0, wyn = 0;
vector&amp;lt;int&amp;gt; liczby;
int stat[200005] = {0};

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;
        liczby.push_back(wczytana_liczba);
    }

    for (int j = 0; j &amp;lt; n; ++j)
    {
        for (int k = j+1; k &amp;lt; n; ++k)
            if (2 * liczby[j] - liczby[k] &amp;gt; 0)
                if (stat[2 * liczby[j] - liczby[k]] == 1)
                    wyn++;
        stat[liczby[j]]++;
    }

    cout &amp;lt;&amp;lt; wyn &amp;lt;&amp;lt; '\n';

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



&lt;p&gt;Tylko to jest zawolne. Podejrzewam, że trzeba użyć jakiegoś drzewa przedziałowego lub czegoś takiego, ale nie mam pomysłu jak. Ma ktoś pomysł?&lt;/p&gt;



&lt;p&gt;Z góry dziekuję za pomoc i poświęcony czas!&lt;/p&gt;</description>
<category>Algorytmy</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/580600/zadanie-podciagi-arytmetyczne-oboz-naukowy-ilocamp</guid>
<pubDate>Mon, 20 Feb 2023 14:52:58 +0000</pubDate>
</item>
</channel>
</rss>