Millor desordre. X71160


Statement
 

pdf   zip   main.py

Definim el desordre d’un vector vv d’aquesta manera:

desordre(v)=i=1n1v[i]v[i1]desordre(v) = \sum_{i=1}^{n-1} v[i] - v[i-1]

Feu la funció

millor_desordre(v)

tal que, donat un vector vv de mida n>0n > 0 que conté enters (positius i negatius) que no han d’estar necessàriament ordenats, torni un parell de subíndexos i,ji, j tals que 0i<j<n0 \leq i < j < n de manera que l’intercanvi dels valors d’aquestes dues posicions siguin les que maximitzin el valor de desordre(v)desordre(v). Si hi ha més d’un parell que maximitzi amb el mateix valor la funció desordre(v)desordre(v), torneu la més petita, tenint en compte que (i,j)<(i,j)(i,j) < (i',j')

si i només si

i<i o bé i=i i j<ji < i' \text{ o bé } i = 'i \text{ i } j < j'

En cas que no n’hi hagi cap intercanvi que maximitzi el valor de desordre(v)desordre(v) cal tornar (0,0)(0,0).

Per exemple, si v=[1,4,2,3]v = [1, 4, 2, 3], llavors la funció tornarà el vector (1,3)(1 ,3), ja que desordre([1,4,2,3])=2desordre([1, 4, 2, 3]) = 2, però si intercanviem les posicions 11 i 33 tenim que v=[1,3,2,4]v = [1, 3, 2, 4] i per tant tenim que desordre([1,3,2,4])=3desordre([1, 3, 2, 4]) = 3. A més, aquest és l’intercanvi que maximitza el valor d’aquesta funció.

És evident que si fer una funció que calculi desordre(v)desordre(v) us pot ajudar a resoldre el problema.

Entrada

Un vector vv de mida n>0n > 0 que conté enters (positius i negatius) que no han d’estar necessàriament ordenats

Sortida

El parell de subíndexos i,ji, j tals que 0i<j<n0 \leq i < j < n que maximitzen desordre(v)desordre(v). Si no n’hi ha cap, llavors ha de tornar (0,0)(0, 0).

Public test cases
  • Input

    1 4 2 3 
    

    Output

    (1, 3)
    
  • Input

    1 3 5 7 9
    

    Output

    (0, 0)
    
  • Information
    Author
    INFO.
    Language
    Catalan
    Official solutions
    Python
    User solutions
    Python