CSES - Listahyppy Annettuna on lista, jossa on $n$ alkiota. Jokainen alkio on kokonaisluku väliltä $1 \dots n$.

Lähdet liikkelle listan alusta, ja aina kun olet alkion $x$ kohdalla, saat hypätä $x$ askelta vasemmalle tai oikealle. Et saa kuitenkaan tehdä hyppyä, joka veisi listan ulkopuolelle. Tavoitteesi on päästä listan loppuun niin, että hyppyjen kokonaismatka on mahdollisimman pieni.

Esimerkiksi listassa $[3,5,2,2,2,3,5]$ paras ratkaisu on hypätä ensin $3$ askelta oikealle, sitten $2$ askelta vasemmalle ja lopuksi $5$ askelta oikealle. Tässä askelia on yhteensä $3+2+5=10$.

Voit olettaa, että $n$ on enintään $10^5$. Jos mitään ratkaisua ei ole olemassa, palauta $-1$.

Python

Toteuta tiedostoon listjump.py funktio calculate, joka antaa pienimmän kokonaismatkan.
def calculate(t):
    # TODO

if __name__ == "__main__":
    print(calculate([1,1,1,1])) # 3
    print(calculate([3,2,1])) # -1
    print(calculate([3,5,2,2,2,3,5])) # 10
    print(calculate([7,5,3,1,4,2,4,6,1])) # 32
Java

Toteuta tiedostoon ListJump.java metodi calculate, joka antaa pienimmän kokonaismatkan.
public class ListJump {
    public long calculate(int[] t) {
        // TODO
    }

    public static void main(String[] args) {
        ListJump l = new ListJump();
        System.out.println(l.calculate(new int[] {1,1,1,1})); // 3
        System.out.println(l.calculate(new int[] {3,2,1})); // -1
        System.out.println(l.calculate(new int[] {3,5,2,2,2,3,5})); // 10         
        System.out.println(l.calculate(new int[] {7,5,3,1,4,2,4,6,1})); // 32
    }
}