<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1075_-_Grad_1</id>
	<title>1075 - Grad 1 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1075_-_Grad_1"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1075_-_Grad_1&amp;action=history"/>
	<updated>2026-05-01T06:34:18Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1075_-_Grad_1&amp;diff=9641&amp;oldid=prev</id>
		<title>Raul: Pagină nouă: Se consideră un şir &lt;code&gt;x&lt;sub&gt;1&lt;/sub&gt;&lt;/code&gt;, &lt;code&gt;x&lt;sub&gt;2&lt;/sub&gt;&lt;/code&gt;, …, &lt;code&gt;x&lt;sub&gt;n&lt;/sub&gt;&lt;/code&gt; de &lt;code&gt;n&lt;/code&gt; numere naturale distincte, două câte două. Pentru o secvenţă de &lt;code&gt;k&lt;/code&gt; numere &lt;code&gt;(x&lt;sub&gt;p&lt;/sub&gt;, x&lt;sub&gt;p+1&lt;/sub&gt;, ..., x&lt;sub&gt;p+k-1&lt;/sub&gt;)&lt;/code&gt;, care începe cu numărul de pe poziţia &lt;code&gt;p&lt;/code&gt; din şirul dat, definim gradul său ca fiind numărul de numere din secvenţă, care rămân pe aceleaşi poziţii după ordonarea cres...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1075_-_Grad_1&amp;diff=9641&amp;oldid=prev"/>
		<updated>2024-02-13T14:57:34Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: Se consideră un şir &amp;lt;code&amp;gt;x&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;x&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt;&amp;lt;/code&amp;gt; de &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale distincte, două câte două. Pentru o secvenţă de &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; numere &amp;lt;code&amp;gt;(x&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;, x&amp;lt;sub&amp;gt;p+1&amp;lt;/sub&amp;gt;, ..., x&amp;lt;sub&amp;gt;p+k-1&amp;lt;/sub&amp;gt;)&amp;lt;/code&amp;gt;, care începe cu numărul de pe poziţia &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; din şirul dat, definim gradul său ca fiind numărul de numere din secvenţă, care rămân pe aceleaşi poziţii după ordonarea cres...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Se consideră un şir &amp;lt;code&amp;gt;x&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;x&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt;&amp;lt;/code&amp;gt; de &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale distincte, două câte două. Pentru o secvenţă de &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; numere &amp;lt;code&amp;gt;(x&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;, x&amp;lt;sub&amp;gt;p+1&amp;lt;/sub&amp;gt;, ..., x&amp;lt;sub&amp;gt;p+k-1&amp;lt;/sub&amp;gt;)&amp;lt;/code&amp;gt;, care începe cu numărul de pe poziţia &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; din şirul dat, definim gradul său ca fiind numărul de numere din secvenţă, care rămân pe aceleaşi poziţii după ordonarea crescătoare a secvenţei. De exemplu, pentru &amp;lt;code&amp;gt;n=7&amp;lt;/code&amp;gt; şi şirul  format din numerele:  &amp;lt;code&amp;gt;1, 5, 7, 4, 6, 2, 9&amp;lt;/code&amp;gt;,  secvenţa formată din  numerele &amp;lt;code&amp;gt;7, 4, 6, 2&amp;lt;/code&amp;gt; (corespunzătoare lui &amp;lt;code&amp;gt;p=3&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;k=4&amp;lt;/code&amp;gt;) are gradul egal cu &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; deoarece, după ordonarea crescătoare a numerelor din secvenţă, aceasta devine &amp;lt;code&amp;gt;2, 4, 6, 7&amp;lt;/code&amp;gt;, numerele &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt; rămânând pe aceleaşi poziţii.&lt;br /&gt;
&lt;br /&gt;
= Cerinţă =&lt;br /&gt;
Scrieţi un program care citeşte numerele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;x&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt;&amp;lt;/code&amp;gt;, cu semnificaţia din enunţ, şi apoi determină:&lt;br /&gt;
&lt;br /&gt;
a) gradul întregului şir de numere;&lt;br /&gt;
&lt;br /&gt;
b) poziţia primului element din prima secvenţă de lungime &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; ce are gradul maxim, precum şi gradul acestei secvenţe.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;grad1.in&amp;lt;/code&amp;gt; conține pe prima linie numerele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;, separate printr-un spaţiu, iar pe linia următoare &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale distincte &amp;lt;code&amp;gt;x&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;lt;/code&amp;gt;, …, &amp;lt;code&amp;gt;x&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt;&amp;lt;/code&amp;gt;, corespunzătoare şirului de numere, separate prin câte un spaţiu.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;grad1.out&amp;lt;/code&amp;gt; va conține pe prima linie un număr natural reprezentând gradul întregului şir de numere, iar pe următoarea linie două numere naturale, separate printr-un singur spaţiu, primul număr reprezentând poziţia primului element din prima secvenţă de lungime &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; ce are grad maxim şi cel de-al doilea număr reprezentând gradul acestei secvenţe.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;0 &amp;lt; n &amp;lt; 10001&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0 &amp;lt; k &amp;lt; n+1&amp;lt;/code&amp;gt;&lt;br /&gt;
* Numerele din şir sunt numere naturale strict mai mici decât &amp;lt;code&amp;gt;32000&amp;lt;/code&amp;gt;.&lt;br /&gt;
* O secvenţă de numere din şir reprezintă o succesiune de numere din acel şir, aflate pe poziţii consecutive.&lt;br /&gt;
* Gradul întregului şir de numere este egal cu gradul secvenţei de &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere care începe cu numărul de pe poziţia &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; şi conţine toate cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere din şir.&lt;br /&gt;
* Pentru rezolvarea corectă a subpunctului a)  se obţine 40% din punctaj.&lt;br /&gt;
* Pentru rezolvarea corectă a subpunctului b)  se obţine 60% din punctaj.&lt;br /&gt;
&lt;br /&gt;
= Exemplu: =&lt;br /&gt;
&amp;lt;code&amp;gt;grad1.in&amp;lt;/code&amp;gt;&lt;br /&gt;
 7 4&lt;br /&gt;
 1 5 7 4 6 2 9&lt;br /&gt;
&amp;lt;code&amp;gt;grad1.out&amp;lt;/code&amp;gt;&lt;br /&gt;
 3&lt;br /&gt;
 3 2&lt;br /&gt;
&lt;br /&gt;
= Explicație =&lt;br /&gt;
După ordonare, şirul &amp;lt;code&amp;gt;1 5 7 4 6 2 9&amp;lt;/code&amp;gt; devine &amp;lt;code&amp;gt;1 2 4 5 6 7 9&amp;lt;/code&amp;gt;, pe aceleaşi poziţii rămân &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt;, deci gradul întregului şir este &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Avem patru secvenţe cu câte 4 elemente:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 5 7 4&amp;lt;/code&amp;gt;, care are gradul &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;5 7 4 6&amp;lt;/code&amp;gt;, care are gradul &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;7 4 6 2&amp;lt;/code&amp;gt;, care are primul număr pe poziţia &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; și gradul &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;4 6 2 9&amp;lt;/code&amp;gt;, care are gradul &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Încărcare soluție ==&lt;br /&gt;
&lt;br /&gt;
=== Lipește codul aici ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def read_input(filename):&lt;br /&gt;
    with open(filename, &amp;#039;r&amp;#039;) as fin:&lt;br /&gt;
        n, k = map(int, fin.readline().split())&lt;br /&gt;
        x = [0] + [int(num) for num in fin.readline().split()]&lt;br /&gt;
    return n, k, x&lt;br /&gt;
&lt;br /&gt;
def sort_subarray(y, n):&lt;br /&gt;
    sorted = False&lt;br /&gt;
    while not sorted:&lt;br /&gt;
        sorted = True&lt;br /&gt;
        for i in range(1, n):&lt;br /&gt;
            if y[i] &amp;gt; y[i + 1]:&lt;br /&gt;
                y[i], y[i + 1] = y[i + 1], y[i]&lt;br /&gt;
                sorted = False&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n, k, x = read_input(&amp;quot;grad1.in&amp;quot;)&lt;br /&gt;
    y = x.copy()&lt;br /&gt;
    sort_subarray(y, n)&lt;br /&gt;
    g = sum(1 for i in range(1, n + 1) if x[i] == y[i])&lt;br /&gt;
    &lt;br /&gt;
    with open(&amp;quot;grad1.out&amp;quot;, &amp;#039;w&amp;#039;) as fout:&lt;br /&gt;
        fout.write(f&amp;quot;{g}\n&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        y = x[1:k+1]&lt;br /&gt;
        sort_subarray(y, k)&lt;br /&gt;
        gmax = sum(1 for i in range(1, k + 1) if x[i] == y[i])&lt;br /&gt;
        pmax = 1&lt;br /&gt;
        &lt;br /&gt;
        for i in range(2, n - k + 2):&lt;br /&gt;
            j = 1&lt;br /&gt;
            while j &amp;lt;= k and y[j] != x[i - 1]:&lt;br /&gt;
                j += 1&lt;br /&gt;
            if j &amp;lt;= k:&lt;br /&gt;
                y[j] = x[i + k - 1]&lt;br /&gt;
                while j &amp;gt; 1 and y[j - 1] &amp;gt; y[j]:&lt;br /&gt;
                    y[j], y[j - 1] = y[j - 1], y[j]&lt;br /&gt;
                    j -= 1&lt;br /&gt;
                while j &amp;lt; k and y[j] &amp;gt; y[j + 1]:&lt;br /&gt;
                    y[j], y[j + 1] = y[j + 1], y[j]&lt;br /&gt;
                    j += 1&lt;br /&gt;
            &lt;br /&gt;
            gr = sum(1 for j in range(1, k + 1) if y[j] == x[i + j - 1])&lt;br /&gt;
            if gr &amp;gt; gmax:&lt;br /&gt;
                gmax = gr&lt;br /&gt;
                pmax = i&lt;br /&gt;
        &lt;br /&gt;
        fout.write(f&amp;quot;{pmax} {gmax}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Raul</name></author>
	</entry>
</feed>