Informatică, întrebare adresată de IonutzG, 8 ani în urmă

In C++ rezolvarea

Cerință

Ți se dă un șir de n numere întregi, reprezentând pachetele trimise și un alt șir cu n - 1 numere întregi, reprezentând pachetele care au ajuns cu succes până la tine. Elementele din cel de-al doilea șir NU vor fi în aceeași ordine ca și cele din primul, dar toate valorile din al doilea șir se găsesc și în primul. Identifică elementul care se găsește în primul șir, dar lipsește din al doilea.


Date de intrare

Pe prima linie se va găsi numărul n, iar pe următoarele două linii elementele celor două șiruri.


Date de ieșire

Programul va afișa pe ecran numărul x, care reprezintă elementul lipsă din cel de-al doilea șir.


Precizări și restricții

1 ≤ n ≤ 1 000

elementele din șir nu vor avea valori mai mari de 100 000, respectiv mai mici de -100 000

Exemple

Date de intrare

10

32 34 89 -67 45 21 34 5 9 7

34 32 45 89 34 21 5 7 9
Date de iesire
- 67

Răspunsuri la întrebare

Răspuns de Sergetec
2

Salut!

Ai rezolvarea problemei mai jos

#include <iostream>

#include <algorithm>

using namespace std;

bool caut_bin(int x, int v[], int n)

{

 int st = 0, dr = n;

 while (st <= dr)

 {

   int m = (st + dr) / 2;

   if (x == v[m])

   {

     return true;

   }

   if (x < v[m])

   {

     dr = m - 1;

   }

   else

   {

     st = m + 1;

   }

 }

 return false;

}

int main()

{

 int n, a[1001], b[1001];

 cin >> n;

 for (int i = 0; i < n; ++i)

 {

   cin >> a[i];

 }

 for (int i = 0; i < n - 1; ++i)

 {

   cin >> b[i];

 }

 //Sortam crescator cele 2 siruri

 sort(a, a + n);

 sort(b, b + n - 1);

 for (int i = 0; i < n; ++i)

 {

   if (!caut_bin(a[i], b, n - 1)) //daca nu s-a gasit elementul a[i] in sirul b

   {

     cout << a[i] << " ";

   }

 }

 return 0;

}


IonutzG: Multumesc , codul functioneaza bine pe exemplul din problema , insa cand incarc problema pe platforma primesc 80 din 100 de puncte ( asta inseamna ca acest cod nu acopera un anumit caz). Ai putea te rog frumos sa incerci sa descoperi si sa rezolvi problema ?
Sergetec: Nu prea vad in ce cazuri nu merge. Ai 2 variante, ori sa verifici daca n se afla in limita 1 - 1000 ori sa folosesti un algoritm de sortare gen quick sort sau merge sort. Alte imbunatatiri nu cred ca mai exista
GAGA135: @Sergetec poti te rog sa ma ajuti cu problema: "https://brainly.ro/tema/9967734"? Sincer m-am blocat la aceasta.
andrei750238: Pentru 100p mi se pare ca aceasta se poate rezolva cu un fel de vector caracteristic (la citirea primului sir marcam toate elementele gasite, la citirea al doilea sir demarcam elementele gasite). Apoi verificam ce element a ramas marcat in vector.
Sergetec: Ai putea sa mai incerci o chestie si sa vezi daca ti da 100p, insumeaza elementele din ambii vectori in 2 variabile diferite, apoi fa diferenta dintre ele, o sa-ti dea elementul care lipseste. Iar pentru eficienta poti sa faci suma elementelor in acelasi for in care citesti si vectorii.
andrei750238: Smart ideea cu suma
Alte întrebări interesante