vipulcyber's blog

By vipulcyber, history, 19 months ago, In English

You are given a permutation p1,p2,…,pn of length n and a positive integer k≤n.

In one operation you can choose two indices i and j (1≤i<j≤n) and swap pi with pj.

Find the minimum number of operations needed to make the sum p1+p2+…+pk as small as possible.

A permutation is an array consisting of n distinct integers from 1 to n in arbitrary order. For example, [2,3,1,5,4] is a permutation, but [1,2,2] is not a permutation (2 appears twice in the array) and [1,3,4] is also not a permutation (n=3 but there is 4 in the array).

Input Each test contains multiple test cases. The first line contains the number of test cases t (1≤t≤100). Description of the test cases follows.

The first line of each test case contains two integers n and k (1≤k≤n≤100).

The second line of each test case contains n integers p1,p2,…,pn (1≤pi≤n). It is guaranteed that the given numbers form a permutation of length n.

Output For each test case print one integer — the minimum number of operations needed to make the sum p1+p2+…+pk as small as possible.

INPUT:

4

3 1

2 3 1

3 3

1 2 3

4 2

3 4 1 2

1 1

1

OUTPUT:

1

0

2

0


#include<bits/stdc++.h> using namespace std; int main() { int t; cin>>t; while(t--) { int n,k; cin>>n>>k; int a[n]; for(int i=0;i<n;i++) { cin>>a[i]; } int cnt=0; set<int>s; for(int i=1;i<=k;i++) { s.insert(i); } for(int i=0;i<k;i++) { if(s.find(a[i])!=s.end()) { s.erase(a[i]); } } cout<<s.size()<<endl; } return 0; }

Full text and comments »

  • Vote: I like it
  • -20
  • Vote: I do not like it