Shift and Replace

3.8

49 votes
Algorithms, Dynamic Programming, Segment Trees
Problem

You are given an array A of N integers. The following two operations can be performed on the provided array and each operation costs 1 unit.

  1. Change the value of any element (only one element).
  2. Perform cyclic shifts to the array to left by 1 unit. For example, if an array is 2 3 1 4 and 1 left shift is performed, then the array becomes 3 1 4 2.

You are given Q queries of type X B. For each query, you must replace the value of the element at index X with B. Find the minimum cost required to convert array A to the identity array.

An identity array of size N is 1, 2, 3, ..., N1, N

Note: For each query, you cannot perform actual operations on array A apart from setting A[X] to B.

Input format

  • The first line contains N denoting the number of elements in the array.
  • The second line contains N space-separated integers.
  • The next line contains Q denoting the number of queries.
  • The next Q lines contain queries of type X B.

Output format
Print Q integers in a separate line representing the answer to Q queries.

Constraints
1N, Q1e51XN1A[i], B109

Time Limit: 1
Memory Limit: 256
Source Limit:
Explanation

Initial array after Query 1, [1,1,2,3]. Minimum cost is 2. Cyclic Shift once and replace value of last index to be 4.

Array after Query 2, [4,1,2,3]. Minimum cost is 1. Cyclic Shift once.

Array after Query 3, [4,1,2,40]. Minimum cos is  2. Cyclic Shift once, replace 3rd element with 3.

Editor Image

?