Remove One Element CodeChef Solution

Problem -Remove One Element CodeChef Solution

This website is dedicated for CodeChef solution where we will publish right solution of all your favourite CodeChef problems along with detailed explanatory of different competitive programming concepts and languages.

Remove One Element CodeChef Solution in C++17

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef long double ld;

typedef vector<int> vi;

#define f(i,x,n) for(ll i=x;i<n;i++)
#define all(a) a.begin() , a.end()

#define fast_io() ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)

#define print(a) cout << a << ' '
#define println(a) cout << a << '\n'
#define line() cout << '\n'


inline void solve() {
    int n; cin >> n;
    
    vi a(n),b(n-1);
    f(i,0,n) cin >> a[i];
    f(i,0,n-1) cin >> b[i];
    
    sort(all(a));
    sort(all(b));
    
    map<int,int> freq;
    int d1,d2;
    f(i,0,n-1) {
        d1 = b[i] - a[i];
        d2 = b[i] - a[i+1];
        if( d1 > 0 ) freq[d1]++;
        if( d2 > 0 ) freq[d2]++;
    }
    
    for(auto f:freq ) {
        if(f.second == n-1) {
            println(f.first);
            return;
        }
    }
}

signed main() {
    fast_io();

    int t = 1;
    cin >> t;
    while(t--) solve();

    return 0;
}

Remove One Element CodeChef Solution in C++14

#include <bits/stdc++.h>
using namespace std;

#define int long long int
#define trav(a, x) for(auto &a:x)
#define rep(i, b) for(int i=0; i<b; i++)
#define in(n) int n; cin>>n;

#define vi vector<int>
#define vc vector<char>
#define vs vector<string>
#define vvi vector<vi>
#define vpii vector<pair<int,int>>
#define mii map<int,int> 
#define mci map<char,int>
#define msi map<string,int>

#define pb push_back
#define pob pop_back 
#define fi first
#define se second

#define YES cout << "YES" << endl;
#define yes cout << "yes" << endl;
#define Yes cout << "Yes" << endl;
#define NO cout << "NO" << endl;
#define no cout << "no" << endl;
#define No cout << "No" << endl;
#define minus1 cout<<-1<<endl;
#define zero cout<<0<<endl;
#define coutt(x) cout<<x<<endl;
#define cott(x) cout<<x<<" ";
#define end cout << endl;

#define mod 998244353

void solve()
{
    int n;
    cin>>n;
    int arr[n];
    int brr[n-1];
    rep(i,n)cin>>arr[i];
    rep(i,n-1)cin>>brr[i];
    sort(arr,arr+n);
    sort(brr,brr+n-1);
    mii m;
    for(int i=0;i<n-1;i++)
    {
        m[brr[i]-arr[i]]++;
        m[brr[i]-arr[i+1]]++;
    }
    int value = -1;
    int val = 0;
    for(auto i:m)
    {
        if(i.se>val && i.fi>0)
        {
            value = i.fi;
            val = i.se;
        }
    }
    cout<<value<<endl;
}
int32_t main()
{
  int t;
  cin >> t;
  while (t--)
  {
    solve();
  }

  return 0;
}

Remove One Element CodeChef Solution in PYTH 3

'''
bob's array is 1 smaller
Step 1: Sort the 2 arrays
Step 2: Either x = bobArray[0] - aliceArray[0]
            or
               x = bobArray[0] - aliceArray[1]
        Both cannot be false
Since we want smallest value of x, try checking for 2nd case
If not, 1st case should be true.
'''
def decodeX(aliceArray, bobArray):
    if not isinstance(aliceArray, list) or not isinstance(bobArray, list):
        raise ValueError
    aliceArray.sort()
    bobArray.sort()
    deltaX1 = bobArray[0] - aliceArray[0]
    deltaX2 = bobArray[0] - aliceArray[1]
    if deltaX2 <= 0:
        return deltaX1
    for i in range(0, len(bobArray)):
        deltaX = bobArray[i] - aliceArray[i+1]
        if deltaX != deltaX2:
            return deltaX1
    return deltaX2

def solve():
    # ignore N
    input()
    aliceArray = list(map(int, input().split()))
    bobArray = list(map(int, input().split()))

    x = decodeX(aliceArray, bobArray)
    print(x)

def main():
    test_cases = int(input())
    for t in range(test_cases):
        solve()

if __name__ == "__main__":
    main()

Remove One Element CodeChef Solution in C

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define lli long long int
#define li long int
#define inf 10000

int max(int a, int b)
{
    int m = a;
    if(b>a)
        m = b;
    return m;
}

int min(int a, int b)
{
    int m = a;
    if(b<a)
        m = b;
    return m;
}

// Merges two subarrays of arr[].
// First subarray is arr[l..m]
// Second subarray is arr[m+1..r]
void merge(lli arr[], lli l, lli m, lli r)
{
    lli i, j, k;
    lli n1 = m - l + 1;
    lli n2 = r - m;
 
    /* create temp arrays */
    lli L[n1], R[n2];
 
    /* Copy data to temp arrays L[] and R[] */
    for (i = 0; i < n1; i++)
        L[i] = arr[l + i];
    for (j = 0; j < n2; j++)
        R[j] = arr[m + 1 + j];
 
    /* Merge the temp arrays back into arr[l..r]*/
    i = 0; // Initial index of first subarray
    j = 0; // Initial index of second subarray
    k = l; // Initial index of merged subarray
    while (i < n1 && j < n2) {
        if (L[i] <= R[j]) {
            arr[k] = L[i];
            i++;
        }
        else {
            arr[k] = R[j];
            j++;
        }
        k++;
    }
 
    /* Copy the remaining elements of L[], if there
    are any */
    while (i < n1) {
        arr[k] = L[i];
        i++;
        k++;
    }
 
    /* Copy the remaining elements of R[], if there
    are any */
    while (j < n2) {
        arr[k] = R[j];
        j++;
        k++;
    }
}
 
/* l is for left index and r is right index of the
sub-array of arr to be sorted */
void mergeSort(lli arr[], lli l, lli r)
{
    if (l < r) {
        // Same as (l+r)/2, but avoids overflow for
        // large l and h
        lli m = l + (r - l) / 2;
 
        // Sort first and second halves
        mergeSort(arr, l, m);
        mergeSort(arr, m + 1, r);
 
        merge(arr, l, m, r);
    }
}

void program()
{
    /*
    sort them
    just take diff of first n-1 (bi - ai)
    if n >= 3 : two diff must be equal, take them
    if n = 2 : take second diff
    */
    lli n;
    scanf("%lld", &n);
    lli i;
    lli A[n], B[n-1];
    for ( i = 0; i < n; i++)
    {
        scanf("%lld", &A[i]);
    }
    for ( i = 0; i < n-1; i++)
    {
        scanf("%lld", &B[i]);
    }
    mergeSort(A, 0, n-1);
    mergeSort(B, 0, n-2);
    if(n == 2)
    {
        if(A[1] >= B[0])
            printf("%lld\n", B[0]-A[0]);
        else
            printf("%lld\n", B[0]-A[1]);
        return;
    }
    lli d1 = B[n-2] - A[n-1];
    lli d2 = B[n-3] - A[n-2];
    if(d1 == d2 && d1>0)
    {
        printf("%lld\n", d1);
        return;
    }
    //eliminate A[n-2]
    lli d2_ = B[n-3] - A[n-3];
    if(d1 == d2_ && d1>0)
    {
        printf("%lld\n", d1);
        return;
    }
    //eliminate A[n-1]
    lli d1_ = B[n-2] - A[n-2];
    if(d1_ == d2_)
    {
        printf("%lld\n", d1_);
        return;
    }
}

int main(void) 
{
    long long int T;
    scanf("%lld", &T);
    //printf("%lld\n", T);
    // T = 1;
    for (long long int i = 0; i < T; i++)
    {
        program();
    }
	return 0;
}

Remove One Element CodeChef Solution in JAVA

/* package codechef; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class Codechef
{
	public static void main (String[] args) throws java.lang.Exception
	{
		// your code goes here
		Scanner sc=new Scanner(System.in);
		int disha=sc.nextInt();
		while(disha-->0){
		    int cnt=0;
		    int nocnt=0;
		    int n=sc.nextInt();
		    int arr[]=new int[n];
		    int brr[]=new int[n-1];
		    for(int i=0;i<n;i++){
		        arr[i]=sc.nextInt();
		    }
		    for(int i=0;i<n-1;i++){
		        brr[i]=sc.nextInt();
		    }
		    Arrays.sort(arr);
		    Arrays.sort(brr);
		    int diff1=brr[0]-arr[0];
		    int diff2=brr[0]-arr[1];
		    int cnt1=0;
		    int cnt2=0;
		    for(int i=0;i<brr.length;i++){
		        if(brr[i]-arr[i]>0){
		            if(brr[i]-arr[i]==diff1)cnt1++;
		            if(brr[i]-arr[i]==diff2)cnt2++;
		        }
		        if(brr[i]-arr[i+1]>0){
		            if(brr[i]-arr[i+1]==diff1)cnt1++;
		            if(brr[i]-arr[i+1]==diff2)cnt2++;
		        }
		    }
		    if(diff1<=0)
		    System.out.println(diff2);
		   
		    else if(diff2<=0)
		    System.out.println(diff1);
		    
		     else if(cnt1 > cnt2 && diff2 > 0) {
            System.out.println(diff1);
        }
        else {
            System.out.println(diff2);
        }
		}
	}
}

Remove One Element CodeChef Solution in PYPY 3

for _ in range(int(input())):
    n = int(input())
    a = list(map(int, input().split()))
    b = list(map(int, input().split()))
    a.sort()
    b.sort()
    
    m = min(b)-min(a)
    M = max(b)-max(a)
    
    # the answer is either m or M
    if M <= 0:
        print(m)
    elif n == 2:
        print(min(m, M))
    elif b[0]-a[1] == M:
        print(M)
    else:
        print(m)

Remove One Element CodeChef Solution in PYTH

# cook your code here
import collections

T = input()
while T>0:
    N = input()
    A = sorted(map(int,raw_input().split()))
    B = sorted(map(int,raw_input().split()))
    if N == 2:
        if A[0]<B[0]: print(min(B[0] - A[0],B[0]-A[1])  if B[0]>A[1] else B[0]-A[0])
        else: print(B[0]-A[1])
    else:
        if B[0]-A[1] == B[1]-A[2] and B[0]-A[1]!=0: print(B[0]-A[1])
        else:print(B[0]-A[0])
    T-=1

Remove One Element CodeChef Solution in C#

using System;
using System.Linq;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Text;
using System.Numerics;

public class Test
{
	public static void Main()
	{
	    var WS = new StringBuilder();
	    int A = GetInt();
	    
	    int N;
	    while(A-- != 0)
	    {
	        var n = GetInt();
	        var a = GetIntArray().ToList();
	        var b = GetIntArray().ToList();
	        
	        var originalMin = a.Min();
		    var originalSecondMin = a.Where(x => x > originalMin).Min();
		    var newMin = b.Min();
		    var x1 = newMin - originalMin;
		    var x2 = newMin - originalSecondMin;
		    var originalSet = new HashSet<int>(a);
		    var isValid2 = x2 > 0 && b.All(x => originalSet.Contains(x - x2));
		    if(isValid2) Console.WriteLine(x2);
		    else Console.WriteLine(x1);
	        
	    }
	    
	    Console.WriteLine(WS.ToString());
		// your code goes here
	}
	
		public static void Writex(string s) => (Console.WriteLine(s));
	public static int GetInt() => int.Parse(Console.ReadLine());
    public static long GetLong() => long.Parse(Console.ReadLine());
    public static string GetString() => (Console.ReadLine());

    public static string[] GetStringArray() => Console.ReadLine().Trim().Split(' ');
    public static int[] GetIntArray() => Console.ReadLine().Trim().Split(' ').Select(int.Parse).ToArray();
        public static long[] GetLongArray() =>  Console.ReadLine().Trim().Split(' ').Select(long.Parse).ToArray();
}

Remove One Element CodeChef Solution in GO

package main

import (
	"bufio"
	"bytes"
	"fmt"
	"os"
	"sort"
)

func main() {
	reader := bufio.NewReader(os.Stdin)
	tc := readNum(reader)
	var buf bytes.Buffer
	for tc > 0 {
		tc--
		n := readNum(reader)
		A := readNNums(reader, n)
		B := readNNums(reader, n-1)
		res := solve(n, A, B)
		buf.WriteString(fmt.Sprintf("%d\n", res))
	}
	fmt.Print(buf.String())
}

func readInt(bytes []byte, from int, val *int) int {
	i := from
	sign := 1
	if bytes[i] == '-' {
		sign = -1
		i++
	}
	tmp := 0
	for i < len(bytes) && bytes[i] >= '0' && bytes[i] <= '9' {
		tmp = tmp*10 + int(bytes[i]-'0')
		i++
	}
	*val = tmp * sign
	return i
}

func readNum(reader *bufio.Reader) (a int) {
	bs, _ := reader.ReadBytes('\n')
	readInt(bs, 0, &a)
	return
}

func readTwoNums(reader *bufio.Reader) (a int, b int) {
	res := readNNums(reader, 2)
	a, b = res[0], res[1]
	return
}

func readThreeNums(reader *bufio.Reader) (a int, b int, c int) {
	res := readNNums(reader, 3)
	a, b, c = res[0], res[1], res[2]
	return
}

func readNNums(reader *bufio.Reader, n int) []int {
	res := make([]int, n)
	x := 0
	bs, _ := reader.ReadBytes('\n')
	for i := 0; i < n; i++ {
		for x < len(bs) && (bs[x] < '0' || bs[x] > '9') && bs[x] != '-' {
			x++
		}
		x = readInt(bs, x, &res[i])
	}
	return res
}

func readUint64(bytes []byte, from int, val *uint64) int {
	i := from

	var tmp uint64
	for i < len(bytes) && bytes[i] >= '0' && bytes[i] <= '9' {
		tmp = tmp*10 + uint64(bytes[i]-'0')
		i++
	}
	*val = tmp

	return i
}

func solve(n int, A []int, B []int) int {
	sort.Ints(A)
	sort.Ints(B)

	x := B[0] - A[0]
	if x > 0 {
		i := 1
		j := 1
		var cnt int
		for i < n-1 {
			if j < n && B[i]-A[j] == x {
				i++
				j++
				continue
			}
			j++
			cnt++
			if j < n && B[i]-A[j] == x {
				i++
				j++
				continue
			}
			break
		}
		if j < n {
			cnt++
		}
		if i < n-1 || cnt != 1 {
			// bad choice
			x = -1
		}
	}
	y := B[0] - A[1]
	if y > 0 {
		i := 1
		j := 2
		for i < n-1 && j < n && B[i]-A[j] == y {
			i++
			j++
		}
		if i < n-1 {
			y = -1
		}
	}
	if x > 0 && y > 0 {
		return min(x, y)
	}
	if x > 0 {
		return x
	}
	return y
}

func min(a, b int) int {
	if a < b {
		return a
	}
	return b
}
Remove One Element CodeChef Solution Review:

In our experience, we suggest you solve this Remove One Element CodeChef Solution and gain some new skills from Professionals completely free and we assure you will be worth it.

If you are stuck anywhere between any coding problem, just visit Queslers to get the Remove One Element CodeChef Solution.

Find on CodeChef

Conclusion:

I hope this Remove One Element CodeChef Solution would be useful for you to learn something new from this problem. If it helped you then don’t forget to bookmark our site for more Coding Solutions.

This Problem is intended for audiences of all experiences who are interested in learning about Programming Language in a business context; there are no prerequisites.

Keep Learning!

More Coding Solutions >>

Cognitive Class Answer

CodeChef Solution

Microsoft Learn

Leave a Reply

Your email address will not be published. Required fields are marked *