Yurinin maraqlı əyləncəsi#8324

Yurinin maraqlı əyləncəsi (Həll təhlili)

Problem iki modeldə təqdim olmalıdır: set funksiyasından istifadə edərək. Tutaq ki, Yura tərəfindən seçilmiş bir rəqəmdir. Əgər artıq sette mövcuddursa, "Yes" və settin ölçüsünü çıxarırıq. Əks halda settə əlavə edirik, "No" və settin ölçüsünü çıxarırıq.

Alqoritmin reallaşdırılması

Set elan edək.

set<int> s;

Sorğuların sayını oxuyuruq .

scanf("%d",&n);

sorğularını ardıcıl olaraq işləyirik.

for(i = 1; i <= n; i++)
{

Yura tərəfindən seçilmiş rəqəmini oxuyuruq.

  scanf("%d",&x);

Əgər setində yoxdursa, onu əlavə edirik, "No" və settin ölçüsünü çıxarırıq.

  if(s.find(x) == s.end())
  {
    s.insert(x);
    printf("No %d\n",s.size());
  }
  else

Əgər setində varsa, "Yes" və settin ölçüsünü çıxarırıq.

    printf("Yes %d\n",s.size());
}

Java reallaşdırılması

import java.util.*;
 
public class Main
{
  public static void main(String[] args)
  {
    Scanner con = new Scanner(System.in);
    TreeSet<Integer> s = new TreeSet<Integer>();
 
    int n = con.nextInt();
    for(int i = 0; i < n; i++)
    {
      int x = con.nextInt();
      if (s.contains(x))
        System.out.println("Yes " + s.size());
      else
      {
        s.add(x);
        System.out.println("No " + s.size());
      }
    }
    con.close();
  }
}   

Python reallaşdırılması

Sorğuların sayını oxuyuruq .

n = int(input())

Set elan edək.

s = set()

sorğularını ardıcıl olaraq işləyirik.

for _ in range(n):

Yura tərəfindən seçilmiş rəqəmini oxuyuruq.

  x = int(input())

Əgər setində varsa, "Yes" çıxarırıq.

  if x in s:
    print("Yes", end = ' ')
  else:

Əgər setində yoxdursa, onu əlavə edirik və "No" çıxarırıq.

    s.add(x)
    print("No", end = ' ')

"Yes" və ya "No" mesajı sonrası settin ölçüsünü çıxarırıq.

  print(len(s))