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 GeometrijeVektorski i Skalarni ProizvodLinijePoligoniTačke i PoligoniKonveksni Omotač
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

Sumnjive transakcije

HardProblem #39
VremeMemorijaUlazIzlaz
1 s64 MBstdinstdout

Ponovno traženje sredine prozora posle svakog koraka je već presporo.

Banka želi da upozori svoje klijente na sumnjive aktivnosti na njihovim računima. Svaki put kada stigne nova transakcija, banka posmatra medijanu m od d transakcija neposredno pre nje, i ako je nova transakcija bar dvostruko veća od m, šalje se upozorenje.

Medijana niza brojeva je vrednost na sredini kada se niz sortira. Ako niz ima paran broj vrednosti, nema jedne središnje, pa je medijana aritmetička sredina dve središnje vrednosti - na primer, medijana niza 2,3,3,4,5,6 je (3+4)/2=3.5.

Prvih d transakcija nema d transakcija pre sebe, pa nikada ne izazivaju upozorenje. Za dati spisak transakcija odredi koliko upozorenja banka pošalje.

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 d - broj transakcija i koliko prethodnih transakcija banka posmatra.
U drugoj liniji svakog test primera je n celih brojeva a1​,a2​,…,an​ - iznosi transakcija, redom kojim su se desile.

Izlaz

Za svaki test primer ispiši u posebnoj liniji broj upozorenja koja banka pošalje.

Primer

Input
1
8 3
2 5 3 4 3 6 2 9
Output
2

Upozorenja se šalju za 6 (tri transakcije pre nje su 3,4,3 sa medijanom 3, a 6≥2⋅3) i za 9 (tri pre nje su 3,6,2, opet sa medijanom 3). Transakcija 5 nije označena iako je velika - pre nje se desila samo jedna transakcija, a ne 3.

Ograničenja

1≤t≤10
2≤n≤105
1≤d≤n
zbir svih n po test primerima ne prelazi 2⋅105
1≤ai​≤109


Zadatak je, uz dozvolu, preuzet iz zadatka Sumnjive transakcije, č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