primprim

Time limit: 0.5s Memory limit: 64MB Input: primprim.in Output: primprim.out

Pentru un număr natural a definim costul ca fiind valoarea absolută (modulul) diferenței dintre a și numărul prim cel mai apropiat de a. Asupra unui șir de nn numere naturale, situate pe poziții numerotate de la 11 la nn, se aplică, în ordine, o succesiune de qq operații. O operație constă dintr-o înlocuire și o afișare și este descrisă sub forma i x p, cu semnificația:

  • mai întâi înlocuim cu xx elementul din șir de pe poziția ii;
  • apoi afișăm suma minimă totală a costurilor unor elemente convenabil selectate de pe pp poziții distincte din șir.

Cerință

Cunoscând nn și cele nn elemente ale șirului, scrieți un program care să determine:

  1. suma costurilor tuturor elementelor din șirul dat;
  2. rezultatele afișate în urma aplicării fiecăreia dintre cele qq operații, date în forma precizată.

Date de intrare

Fișierul de intrare primprim.in va conține pe prima linie un număr natural CC, reprezentând cerința care trebuie să fie rezolvată (11 sau 22), pe a doua linie numărul natural nn, cu semnificația din enunț, iar pe a treia linie cele nn elemente din șir, în ordinea din șir.
Dacă C=2C = 2, pe a patra linie se află numărul natural qq, reprezentând numărul de operații, iar pe următoarele qq linii se află cele qq operații, câte o operație pe linie, în forma descrisă în enunț. Numerele scrise pe aceeași linie sunt separate prin câte un spațiu.

Date de ieșire

Dacă C=1C = 1, fișierul de ieșire primprim.out va conține o singură linie pe care va fi afișată suma costurilor tuturor elementelor din șir.
Dacă C=2C = 2, fișierul de ieșire primprim.out va conține qq linii, pe linia ii fiind scris rezultatul afișat după executarea celei de a ii-a operații din fișierul de intrare.

Restricții și precizări

  • 1q21051 \leq q \leq 2 * 10^5;
  • 1i,pn1061 \leq i,p \leq n \leq 10^6; 1x1061 \leq x \leq 10^6;
  • Elementele șirului sunt numere naturale nenule 106\leq 10^6;
  • Pentru 2020 de puncte, C=1C = 1, n=1n = 1;
  • Pentru 2222 de puncte, C=1C = 1, 1<n1 0001 \lt n \leq 1 \ 000;
  • Pentru 2828 de puncte, C=2C = 2, n1 000n \leq 1 \ 000, q10q \leq 10;
  • Pentru 3030 de puncte, C=2C = 2 și nu există restricții suplimentare.

Exemplul 1

primprim.in

1
5
8 1 3 5 9

primprim.out

4

Explicație

C=1,n=5C = 1, n = 5, iar șirul este 8,1,3,5,98, 1, 3, 5, 9. Costurile elementelor sunt, în ordine, 1,1,0,0,21, 1, 0, 0, 2, deci suma este 44.

Exemplul 2

primprim.in

2
5
8 1 3 5 9
3
2 6 4
3 5 2
5 12 5

primprim.out

2
0
3

Explicație

C=2,n=5C = 2, n = 5, iar șirul inițial este 8,1,3,5,98, 1, 3, 5, 9. Se aplică șirului 33 operații:

  • După prima operație, pentru care i=2i = 2, x=6x = 6 și p=4p = 4, șirul devine 8,6,3,5,98, 6, 3, 5, 9. Suma minimă totală se obține dacă selectăm valorile de pe pozițiile 1,2,31, 2, 3 și 44, costurile fiind 1+1+0+0=21+1+0+0=2.
  • După a doua operație, pentru care i=3i = 3, x=5x = 5 și p=2p = 2, șirul devine 8,6,5,5,98, 6, 5, 5, 9. Selectăm valorile de pe pozițiile 33 și 44 (acestea având costul 00).
  • După a treia operație, pentru care i=5i = 5, x=12x = 12 și p=5p = 5, șirul devine 8,6,5,5,128, 6, 5, 5, 12. Selectăm toate valorile, deci suma este 1+1+0+0+1=31 + 1 + 0 + 0 + 1 = 3.

Log in or sign up to be able to send submissions!