Edição nº 30: Treinamento em TI - problemas e desafios atuais das principais empresas

Olá! Aqui estamos! Hoje temos um artigo de jubileu no número 30!

Mais uma vez, preparamos para você uma seleção de perguntas e tarefas interessantes a partir de entrevistas nas principais empresas de TI! As respostas para os problemas da edição anterior já foram publicadas .



Os problemas serão exibidos toda semana - fique ligado! A coluna é suportada pela agência de recrutamento Spice IT .

Nesta semana, coletamos tarefas de entrevistas na empresa americana Visa.

Questões


1. 100 prisioneiros com chapéus vermelhos / pretos
100 prisioneiros estão na fila em uma direção. Cada prisioneiro está usando um chapéu de cor preta ou vermelha. Um prisioneiro pode ver chapéus de todos os presos na frente dele na fila, mas não pode ver o chapéu e os chapéus dos presos atrás dele.
O carcereiro vai pedir a cor do chapéu de cada prisioneiro a partir do último prisioneiro na fila. Se um prisioneiro diz a cor correta, ele é salvo, caso contrário é executado. Quantos prisioneiros podem ser salvos, no máximo, se eles puderem discutir uma estratégia antes que o carcereiro comece a perguntar as cores de seus chapéus.

Transferir
100 . . , , .
, . , , , . , , .
.

2. Proporção de meninos e meninas em um país onde as pessoas querem apenas meninos
Em um país, todas as famílias querem um menino. Eles continuam tendo bebês até o nascimento de um menino. Qual é a proporção esperada de meninos e meninas no país?

Transferir
. . ?

Tarefas


1. O problema do fornecedor preguiçoso
Dado um número inteiro N , denotando o número de cortes que podem ser feitos em uma panqueca, encontre o número máximo de peças que podem ser formadas fazendo N cortes.

Entrada:
A primeira linha de entrada contém um único inteiro T, indicando o número de casos de teste. Em seguida, seguem os casos de teste T. Cada caso de teste consiste em uma linha. A primeira linha de cada caso de teste consiste em um número inteiro N.

Saída:
correspondente a cada caso de teste, em uma nova linha, imprima o número máximo de peças que podem ser formadas fazendo N cortes.

Restrições: Exemplo: Entrada de Saída

1 ≤ T ≤ 100
1 ≤ N ≤ 106




2
5
3


16
7

Transferir
N, , . , , N .

:
T, . T. . N.

:
, , N .

:

1 ≤ T ≤ 100
1 ≤ N ≤ 106


:

2
5
3


16
7

2. Elemento de pico
Given an array A of N integers. The task is to find a peak element in it.
An array element is peak if it is not smaller than its neighbours. For corner elements, we need to consider only one neighbour.

Note: There may be multiple peak element possible, in that case you may return any valid index.

Input Format:
The first line of input contains an integer T denoting the number of test cases. Then T test cases follow. Each test case contains an integer N. Then in the next line are N space separated values of the array.

Output Format:
For each test case output will be 1 if the index returned by the function is an index with peak element.

User Task:
Você não precisa receber nenhuma entrada. Basta concluir a função fornecida peakElement () e retornar o índice válido.

Restrições: Exemplo: Entrada: Saída: Explicação: Caixa de teste 1: Na matriz especificada, 3 é o elemento de pico. Testcase 2: 4 é o elemento de pico.
1 <= T <= 100
1 <= N <= 100
1 <= A[] <= 1000




2
3
1 2 3
2
3 4


3
4





Transferir
A N . , .
, . .

. , .

:
T, . T. N. N .

:
1 <= T <= 100
1 <= N <= 100
1 <= A [] <= 1000


:
:

2
3
1 2 3
2
3 4

:
3
4


:
1:
3 .
2: 4 .

3. Intervalo Máximo de Sobreposição
Consider a big party where a log register for guest’s entry and exit times is maintained. Find the time at which there are maximum guests in the party. Note that entries in register are not in any order.

Input:
The first line of input contains an integer T denoting the number of test cases. Then T test cases follow. Each test case contains an integer n denoting the size of the entry and exit array. Then the next two line contains the entry and exit array respectively.

Output:
Print the maximum no of guests and the time at which there are maximum guests in the party.

Constraints:
1<=T<=10^5
1<=N<=10^5
1<=entry[i],exit[i]<=10^5


Example:
Input:

2
5
1 2 10 5 5
4 5 12 9 12
7
13 28 29 14 40 17 3
107 95 111 105 70 127 74


Output:
3 5
7 40

, . , . , .

:
T, . T. n, . .

:
, .

:
1 <= <= 10 ^ 5
1 <= N <= 10 ^ 5
1 <= [I], [I] <= 10 ^ 5


:
:

2
5
1 2 10 5 5
4 5 12 9 12
7
13 28 29 14 40 17 3
107 95 111 105 70 127 74


:
3 5
7 40



1
99 , 100- 50-50 .
, .

100- , . , , 99- .

99- 100- . 100-. 99- .

100- «» ( )
) 99- , .
) 99- , — .

100- «» ( )
) 99- , — .
) 99- , — .

98- 99- .

97 1 .

2
: . , , , .

.
NG .

, (1-p) , .

NG .

NG = 0*(1-p) + 1*p*(1-p) + 2*p*p*(1-p) + 3*p*p*p*(1-p) + 4*p*p*p*p*(1-p) +.....

p = 1/2 (1-p) = 1/2 .

NG = 0*(1/2) + 1*(1/2)2 + 2*(1/2)3 + 3*(1/2)4 + 4*(1/2)5 + ...
1/2*NG = 0*(1/2)2 + 1*(1/2)3 + 2*(1/2)4 + 3*(1/2)5 + 4*(1/2)6 + ...


NG - NG/2 = 1*(1/2)2 + 1*(1/2)3 + 1*(1/2)4 + 1*(1/2)5 + 1*(1/2)6 + ...

1
NG/2 = (1/4)/(1-1/2) = 1/2

NG = 1

1
, : (n + c*c + 2) / 2
int main() {
	int t,n,final;
	cin>>t;
	while(t--){
	   cin>>n;
	   final=(n+(n*n)+2)/2;
	   cout<<final<<endl;
	}
	return 0;
}

2
// arr: input array
// n: size of array
int peakElement(int a[], int n)
{
    int i;
    for(i=1;i<n-1;i++){
        if(a[i]>a[i-1] && a[i]>a[i+1]){
            return i;
        }
    }
    if(n>1 && a[0]>a[1])
        return a[0];
    if(n-2>=0 && a[n-1]>a[n-2])
    return a[n-1];
}

3
/*package whatever //do not write package name here */

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

class GFG {
	public static void main (String[] args) {
		Scanner sc = new Scanner(System.in);
		int T = sc.nextInt();
		
		while (T > 0) {
		    int N = sc.nextInt();
		    int[] entry = new int[N];
		    int[] exit = new int[N];
		    for (int i = 0; i < N; i++) {
		        entry[i] = sc.nextInt();
		    }
		    
		    for (int i = 0; i < N; i++) {
		        exit[i] = sc.nextInt();
		    }
		    
		    Arrays.sort(entry);
		    Arrays.sort(exit);
		    //System.out.println(Arrays.toString(entry));
		    //System.out.println(Arrays.toString(exit));
		    
		    int counter = 0;
		    int maxCounter = -1;
		    int maxTime = -1;
		    
		    int entryIdx = 0;
		    int exitIdx = 0;
		    
		    while (entryIdx < N && exitIdx < N) {
		        if (entry[entryIdx] <= exit[exitIdx]) {
		            counter++;
		            if (counter > maxCounter) {
		                maxCounter = counter;
		                maxTime = entry[entryIdx];
		            }
		            entryIdx++;
		        } else {
		            counter--;
		            exitIdx++;
		        }
		    }
		    
		    System.out.println(maxCounter + " " + maxTime);   
		    T--;
		}
	}
}

Source: https://habr.com/ru/post/undefined/


All Articles