Siçanlar və yuvalar#10173

Siçanlar və yuvalar (Həll təhlili)

Siçanların və deşiklərin koordinatlarını müvafiq olaraq və massivlərində sıralayaq. a_i siçanı b_i deşiyində gizlənməlidir. | b_i - a_i | fərqlərinin modulları arasında maksimumu hesablayırıq.

Nümunə

Siçanların və deşiklərin koordinatları olan massivləri sıralayaq. a_i siçanına b_i deşiyini uyğunlaşdıraq.

cavabı koordinatı olan nöqtədən koordinatı olan deşiyə qaçmalı olan dördüncü siçan üçün əldə edilir.

Alqoritmin reallaşdırılması

və iş massivlərini elan edək.

#define MAX 100001
int a[MAX], b[MAX];

Giriş məlumatlarını oxuyuruq.

scanf("%d", &n);
for (i = 0; i < n; i++)
  scanf("%d", &a[i]);
for (i = 0; i < n; i++)
  scanf("%d", &b[i]);

Massivləri sıralayırıq.

sort(a, a + n);
sort(b, b + n);

| b_i - a_i | fərqlərinin modulları arasında maksimumu hesablayırıq.

res = 0;
for (i = 0; i < n; i++)
  if (abs(b[i] - a[i]) > res) res = abs(b[i] - a[i]);

Cavabı çap edirik.

printf("%d\n", res);

Java reallaşdırması

import java.util.*;
 
public class Main
{
  public static void main(String[] args)
  {
    Scanner con = new Scanner(System.in);
    int n = con.nextInt();
    Integer a[] = new Integer[n];
    for(int i = 0; i < n; i++)
      a[i] = con.nextInt();
    
    Integer b[] = new Integer[n];
    for(int i = 0; i < n; i++)
      b[i] = con.nextInt();
   
    Arrays.sort(a);
    Arrays.sort(b);

    int res = 0;
    for (int i = 0; i < n; i++)
      if (Math.abs(a[i] - b[i]) > res) res = Math.abs(a[i] - b[i]);
    
    System.out.println(res);
    con.close();
  }
}  

Python reallaşdırması

Giriş məlumatlarını oxuyuruq.

n = int(input())
a = list(map(int, input().split()))
b = list(map(int, input().split()))

Massivləri sıralayırıq.

a.sort()
b.sort()

| b_i - a_i | fərqlərinin modulları arasında maksimumu hesablayırıq.

res = 0
for i in range(n):
  if abs(a[i] - b[i]) > res: res = abs(a[i] - b[i])

Cavabı çap edirik.

print(res)