Infosys-Specialist-Programmer-Previous Questions
Infosys-Specialist-Programmer-Previous Questions
Problem Statement :
You are given an array a of N Integers and asked to split the array a into k consecutive
segments such that each element of a belongs to exactly one segment and the sum of
the cost of all segments is minimum.
We define the cost of some segment t as the sum of distances between the first and last
occurrence for each unique element in the segment t.
Your task is to find the minimum possible total sum of the cost of all segments.
Input Format
Constraints :
Sample Sample
Input Output Explanation
1 0 The only possible segment is [1] The cost is 1-1=0
1
1
7 3 We can divide the array into [1,6,6,4] and [6,6,6] Cost of [1,6,6, 4] will be (1-1)+(3
2 cost would be 1+2=3
1
6
6
4
6
6
6
C++
#include<bits/stdc++.h>
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
cin >> n >> m;
for (i = 1; i <= n; ++i) cin >> a[i];
for (i = 1; i <= n; ++i) dp[i][0] = inf, pre[i] = lst[a[i]], lst[a[i]] = i;
for (i = 1; i <= n; ++i) lst[a[i]] = n + 1;
for (i = n; i; --i) nxt[i] = lst[a[i]], lst[a[i]] = i;
for (i = 1; i <= m; ++i) solve(1, n, 0, n, i);
cout << dp[n][m] << "\n";
}
Question 2
Problem Statement : Wael wants to play Santa this year, so he prepared gifts for all
the children of the neighborhood. He decided to pack the gifts in boxes and give each
child a box. Let’s define the Value of the box as the number of distinct types of gifts
inside this box.
Wael has N gifts, such that the type of each gift i is A[i]. Wael wants to pack exactly K
boxes, and he has to put in each box a sub-array of consecutive gifts
Wael wants to maximize the total value of all boxes with gifts. Your task is to help him
determine this maximum possible total value
Notes
Each gift should be put in exactly one box, and each box should contain a sub-array of
consecutive gifts.
A box cannot be left empty
Input Format
Constraints
Sample Sample
Input Output Explanation
1 1 Wael will put the only gift in a box so the total value will be 1.
1
1
4 2 Wael has only one box he has to put all gifts in it, so that there are two types of gifts
1
1
2
Sample Sample
Input Output Explanation
2
1
7 5 It is optimal to put the first two gifts in the first box, and all the rest in the second Th
2 the second box then, so the total value is 5.
1
3
3
1
4
4
4
C++
#include <bits/stdc++.h>
using namespace std;
int ans = INT_MIN;
void solve(int a[], int n, int k, int index, int count, int maxval)
{
if (k == 1) {
maxval = max(maxval, count);
count = 0;
map<int, int>mp;
for (int i = index; i < n; i++) {
mp[a[i]]++;
}
count = mp.size();
mp.clear();
}
}
// Driver Code
int main()
{
int arr[] = {1, 1};
int k = 2; // K divisions
int n = 2; // Size of Array
solve(arr, n, k, 0, 0, 0);
cout << ans << "\n";
}
Question 3
Problem Statement :
A subarray of array A is a segment of contiguous elements in array A.
Given an array A of N elements, you can apply the following operations as many times
as you like:
– Choosing a subarray [L, R] and subtracting 1 from each element in this subarray. The
cost of this operation is X.
– Choosing an index i such that A[i] is positive, and setting A[i] = 0. The cost of this
operation in Y.
Your task is to make all the elements equal to 0 and find the minimum cost to do so.
Input Format
The first line contains an integer, N., denoting the number of elements in A.
The next line contains an integer, X, denoting the cost of the first operation.
The next line contains an integer. Y, denoting the cost of the second operation
Each line i of the N subsequent lines (where 1 <=i<= N) contains an Integer describing Ai.
Constraints
1<=N<=10^5
1<=X<=10
1<=Y<=10^4
1<=A[i]<=10^8
Sample Input 1
1
1
10
1
Sample Output 1
Explanation:
N=1 X=1 Y=10 A=[1]. The optimal solution is to perform one operation of the first type
on the subarray [1,N].
Sample Input 2
3
1
1
1
1
1
Sample Output 2
Explanation:
N=3 X=1 Y=1 A=[1,1,1] The optimal solution is to perform one operation of the first type
on the subarray[1,N];
C++
Java
Python
#include <iostream>
using namespace std;
int main ()
{
int arr[] = { 1, 1, 1 };
int X = 1;
int Y = 1;
int ans = 0;
int arrSize = sizeof (arr) / sizeof (arr[0]);
Problem Statement :
Given an array A of N elements. You should choose a value B such that (B>=0), and
then for each element in A set A[i]=A[i](+)B where is the bitwise XOR.
Print the minimum number of inversions in array A that you can achieve after choosing
the value of B optimally and setting A[i] = A[i] (+) B. Since the answer might be large,
print it modulo (10^9+7)
Input Format
Input :
4
1032
Output
1
C++
#include <bits/stdc++.h>
#define sz(x) ((int)(x).size())
#define inf mod
int main ()
{
cin >> n;
for (int i = 1; i <= n; i++)
{
int x;
cin >> x;
add (x, i);
}
go (0);
int inv = 0;
int res = 0;
for (int i = 0; i <= 29; i++)
{
inv += min (dp[0][i], dp[1][i]);
if (dp[1][i] < dp[0][i])
res += (1 << i);
}
cout << inv;
}
Question 5
Problem Statement :
Wael is well-known for how much he loves the bitwise XOR operation, while kaito is
well known for how much he loves to sum numbers, so their friend Resli decided
to make up a problem that would enjoy both of them. Resil wrote down an array A of
length N, an integer K and he defined a new function called Xor- sum as follows
Can you find the integer x in the range [0,K] with the maximum Xor-sum (x) value?
Input format
Constraints
1<=N<=10^5
0<=K<=10^9
0<=A[i]<=10^9
Sample Input 1
1
0
989898
Sample Output 1
989898
Explanation:
Xor_sum(0)=(0^989898)=989898
Sample Input 2
3
7
1
6
3
Sample Output 2
14
Explanation
Xor_sum(4)=(4^1)+(4^6)+(4^3)=14.
Sample Input 3
4
9
7
4
0
3
Sample Output 3
46
Explanation:
Xor_sum(8)=(8^7)+(8^4) +(8^0)+(8^3)=46.
C++
Java
Python
#include<bits/stdc++.h>
using namespace std;
unordered_map < int, int >L;
int main ()
{
int n, k, m;
cin >> n >> k;
vector < int >v (n);