LearnToCP
Prijavi se
Navigacija
PočetnaRoad-mapaProblemiO Nama
Teorija
Takmičarsko Znanje
Izbor Radnog Okruženja (IDE)Interaktivni ZadaciOutput-only Zadaci
Osnove
Tvoj Prvi ProgramTipovi podataka, Unos i IzlazC++ sintaksaModuloFunkcijeVektoriMatriceVremenska Složenost Algoritma
Sortiranje
SortiranjeSortiranje PrebrojavanjemRadix Sort
Tehnike Optimizacije
Dva PokazivačaZbir brojeva od 1 do nZbir PrefiksaBinarna PretragaPohlepni AlgoritmiFunkcije Binarne PretrageBinarna Pretraga po RešenjuPodeli, pa Vladaj
Binarni Brojevi
Binarni BrojeviBrojevi u koduOperacije nad BitovimaBitmaske
Matematika
Binarno StepenovanjeProsti BrojeviRastavljanje na proste činioceNZD i NZSEratostenovo SitoModifikovano Sito
Strukture Podataka
Niske (Stringovi)StekRedMapeSkupovi (Set)Red sa PrioritetomKorišćenje Proizvoljnih KriterijumaSegmentna StablaFenvikova StablaSparse TabeleDisjunktni SkupoviSqrt Dekompozicija
Kombinatorika
Pravilo SabiranjaPravilo MnoženjaKombinatorni ObjektiPrincip Uključenja Isključenja
Geometrija
Osnove GeometrijeVektoriVektorski i Skalarni ProizvodLinijePoligoniUgloviTačka u PoligonuRastojanja i Tačke PresekaKonveksni OmotačKrugovi
Rekurzija
PokazivačiRekurzijaGenerisanje Kombinatornih Objekata
Dinamičko Programiranje
O DP-uDP problemiDP nad StablimaDP nad Bitmaskama
Teorija Grafova
GrafoviDFS i BFSNajkraći PuteviStablaTopološko SortiranjeDajkstrin AlgoritamMinimalna Razapinjuća StablaAlgoritmi Najkraćih Puteva
Napredna Teorija Grafova
Dvostruka PovezanostJako Povezane KomponenteBipartitni GrafMaksimalni Protok u GrafuFord-Fulkersonov AlgoritamDualnost Protoka i Minimalnog PresekaTeško-Laka DekompozicijaCentroidna Dekompozicija
Napredne Strukture Podataka
2D i 3D Segmentna StablaLenjo PropagiranjeImplicitna Segmentna StablaPerzistentna Segmentna StablaNajbliži Zajednički PredakTrieBalansirana Binarna Stabla PretrageMoov Algoritam

Inverzije nakon izbacivanja segmenata

HardProblem #64
VremeMemorijaUlazIzlaz
1 s64 MBstdinstdout

Izbacivanje viška nikad ne može da stvori inverziju. Šta ti to govori o parovima koji prolaze?

Inverzija u nizu je par pozicija kod kog je raniji element veći - formalno, pozicije i<j za koje važi bi​>bj​.

Dat ti je niz a od n pozitivnih celih brojeva. Izabereš dve pozicije l i r, tako da je 1≤l<r≤n, izbaciš sve što je strogo između njih i ostaje ti

b=a1​a2​…al​ar​ar+1​…an​

Primeti da za r=l+1 ne izbacuješ ništa, pa je b tada ceo niz.

Prebroj parove (l,r) za koje niz b ima najviše k inverzija.

Ulaz

U prvoj liniji ulaza je jedan ceo broj t - broj test primera.
U prvoj liniji svakog test primera su dva cela broja n i k - dužina niza i najveći dozvoljeni broj inverzija.
U drugoj liniji je n celih brojeva a1​,a2​,…,an​.

Izlaz

Za svaki test primer ispiši u posebnoj liniji broj parova (l,r) posle kojih ostaje najviše k inverzija.

Primer

Input
4
3 1
1 3 2
3 0
1 3 2
5 2
1 5 4 1 100
5 4
1 5 4 1 100
Output
3
1
6
10

Prva dva test primera koriste isti niz 1,3,2, koji ima tri moguća para. Par (1,3) ostavlja b=1,2 bez ijedne inverzije; parovi (1,2) i (2,3) ne izbacuju ništa i ostavljaju ceo niz, koji ima jednu inverziju. Zato za k=0 prolazi jedan par, a za k=1 sva tri. U poslednjem test primeru svih 10 parova ostaje unutar 4 inverzije.

Ograničenja

1≤t≤10
2≤n≤105
0≤k≤1018
1≤ai​≤109
Zbir n preko svih test primera ne prelazi 2⋅105


Zadatak je, uz dozvolu, preuzet iz zadatka Inverzije nakon izbacivanja segmenata, čiji su autori Društvo matematičara Srbije i Fondacija Petlja.

Pošalji svoje rešenje

Prijavi se da pošalješ rešenje i pratiš svoj napredak.

Prijavi se