Gigel, celebrul antreprenor din Brașov, cunoscut pentru afacerile sale complet legitime cu paleți euro și criptomonede, a uitat (din motive pe care avocatul său l-a sfătuit să nu le divulge) să-și plătească taxele timp de 7 ani consecutivi.
Într-o dimineață mohorâtă de ianuarie, un plic oficial cu antetul ANAF a aterizat în cutia poștală ruginită de la poarta vilei sale. Scrisoarea, redactată în limbajul inconfundabil al administrației publice, îl anunța că în maximum 30 de zile o echipă de inspectori va veni să-i verifice registrele contabile.
Gigel a intrat în panică.
Registrul său conținea tranzacții, fiecare reprezentată printr-un număr întreg , unele pozitive, altele negative, altele supicios de rotunde. Știa cum funcționează inspecțiile: va trebui să prezinte inspectorului o subsecvență continuă din registru, iar acesta o va verifica folosind celebra Regulă de Aur a Contabilității Creative, învățată la masterul de evaziune fiscală de la ASE:
Cu alte cuvinte, fiecare tranzacție trebuie să fie exact diferența celor două tranzacții anterioare, o proprietate pe care doar registrele cu adevărat legitime o au.
Gigel nu poate modifica registrul (e deja înregistrat la Registrul Comerțului), dar poate alege ce porțiune să prezinte. Evident, vrea să prezinte cât mai multe tranzacții (să pară că a muncit din greu) dar fără să fie prins cu încălcări.
Disperat, Gigel și-a sunat cumnatul, Dorel, care lucra ca om de serviciu la sediul central ANAF din București. Dorel, în schimbul unui Audi A6 second-hand din Germania și a unei săptămâni la munte în Poiana Brașov, a acceptat să facă niște cercetări.
Trei zile mai târziu, Dorel l-a sunat înapoi.
- "Nea Gigele, am vorbit cu Maricica de la Resurse Umane. Zice că sunt trei tipuri de inspectori la ANAF. Fiecare are altă treabă cu regulile, dacă înțelegi ce zic..."
- "Spune, Dorele, spune!"
- "Păi... uite cum stă treaba..."
Inspectorul de tip 1 () -"Incorruptibilul"
- "Primul tip e nasol rău, nea Gigele. Ăsta e proaspăt angajat, absolvent de Academia de Poliție, cu media și sufletul curat. Nu acceptă NIMIC."
- "Secvența pe care i-o arăți trebuie să respecte Regula de Aur PERFECT. O singură tranzacție care nu se potrivește și te trimite direct la pârnaie."
Gigel a înghițit în sec.
Inspectorul de Tip 2 () - "Flexibilul"
- "Al doilea tip e mai bătrân, are 30 de ani în sistem. A văzut el multe."
- "Ăsta acceptă ca în secvența ta să existe maxim tranzacții care încalcă regula. Zice el că sunt 'erori de transcriere' și nu face caz. Dar dacă depășești ... pușcărie."
- "Și cum aflu cât e ?" întrebă Gigel.
- "Păi... Maricica zice că mai trebuie un televizor pentru cantina de la etajul 3. Samsung, 55 inch, Smart TV."
- "Făcut."
Inspectorul de Tip 3 () - "Coruptibilul"
- "Al treilea tip, nea Gigele... ăsta e preferatul meu. Băiat de băiat. Îl cheamă Văsâi, joacă poker cu mine vinerea."
- "El acceptă încălcări ale regulii, DAR cu două condiții care trebuie respectate."
- "Ce condiții?"
- "Prima: numărul total de tranzacții care încalcă regula trebuie să fie maxim ."
- "A doua: pentru fiecare tranzacție care încalcă regula, calculează o penalitate:"
- "Suma penalităților trebuie să fie maxim . Deci dacă ai prea multe încălcări, ești mort. Asta e mita, nea Gigele."
- "Înțeleg... deci trebuie să respect ambele condiții în același timp?"
- "Exact, nea Gigele. Maxim tranzacții greșite, iar suma devierilor lor maxim . Depășești oricare din ele, pușcărie."
- "Și cum aflu și ?"
- "Maricica zice că mai trebuie un frigider pentru biroul ei și o excursie în Turcia, all-inclusive, 5 stele."
- "FĂCUT."
Dorel a închis telefonul. Gigel s-a așezat la birou, a deschis registrul, și a început să se gândească: care e cea mai lungă subsecvență continuă de tranzacții pe care o poate prezenta inspectorului, astfel încât să nu ajungă la pușcărie?
Tu, ca prieten bun al lui Gigel, trebuie să-l ajuți să găsească răspunsul.
Cerință
Se dă tipul inspectorului și șirul de tranzacții . Gigel alege o subsecvență continuă . Trebuie să determini lungimea maximă astfel încât subsecvența să fie acceptată.
Pentru o poziție (cu ), regula așteptată este:
Condiția de acceptare depinde de :
- Dacă : nu există abateri. Pentru toate trebuie să fie adevărată regula.
- Dacă : se acceptă cel mult poziții pentru care regula nu este adevărată.
- Dacă : se acceptă cel mult încălcări, iar pentru fiecare încălcare la poziția penalitatea este:
Subsecvența este acceptată dacă:
- numărul încălcărilor
- suma penalităților încălcărilor
Observație: orice subsecvență de lungime sau este considerată validă, deoarece regula se poate verifica doar de la al treilea element.
Date de intrare
Fișierul de intrare evaziune.in conține:
- Pe prima linie, două numere întregi și , separate prin spațiu.
- Pe a doua linie, numere întregi , separate prin spațiu.
- Dacă : pe a treia linie se găsește numărul .
- Dacă : pe a treia linie se găsesc numerele și , separate prin spațiu.
Date de ieșire
Fișierul de ieșire evaziune.out va conține un singur număr întreg: lungimea maximă a subsecvenței valide.
Restricții și precizări
- ;
- ;
- ;
- ;
- Orice subsecvență de lungime sau este considerată validă pentru toate tipurile de inspectori, deoarece Regula de Aur necesită cel puțin elemente pentru a putea fi verificată.
| # | Puncte | Restricții |
|---|---|---|
| 1 | 10 | și |
| 2 | 20 | |
| 3 | 10 | și |
| 4 | 20 | |
| 5 | 10 | și |
| 6 | 30 |
Exemplul 1
evaziune.in
7 1
1 2 1 -1 -2 -1 1
evaziune.out
7
Explicație
Inspectorul este de tip 1 (Incorruptibilul). Subsecvența (pozițiile 1-7) respectă perfect Regula de Aur:
- - valid
- - valid
- - valid
- - valid
- - valid
Exemplul 2
evaziune.in
7 2
1 2 1 -1 0 -1 1
2
evaziune.out
6
Explicație
Inspectorul este de tip 2 (Flexibilul) cu . Subsecvența (pozițiile 1-6) conține exact 2 încălcări:
- valid
- valid
- , așteptat invalid (încălcare #1)
- , așteptat invalid (încălcare #2)
Deoarece avem exact încălcări, subsecvența este validă.
Exemplul 3
evaziune.in
7 3
1 2 1 -1 0 -1 1
3 6
evaziune.out
7
Explicație
Inspectorul este de tip 3 (Coruptibilul) cu și . Verificăm întreaga secvență:
- valid
- valid
- , așteptat invalid (încălcare, penalitate )
- , așteptat invalid (încălcare, penalitate )
- , așteptat invalid (încălcare, penalitate )
Avem incalcari si suma penalitatilor este . Ambele conditii sunt respectate, deci intreaga secventa este valida.