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

Cătălin are N creioane, fiecare creion i având lungimea a[i]. El trebuie sa aleagă 2 creioane ca să scrie

tema la mate. Ca un matematician adevărat, lui Cătălin îi place simetria: el vrea să aleagă cele două cre-
ioane astfel încât ele să fie cât mai asemănătoare (să aibă diferența dintre lungimi minimă). Rolul vostru

este să îi ziceți lui Cătălin care este aceasta diferență minimă.
Date de intrare
În fișierul creioane.in se află pe prima linie numărul N iar pe a doua line N numere.
Date de ieșire
Afișați în fișierul creioane.out diferența minimă dintre oricare două elemente.
Restricții și precizări
2 ≤ N ≤ 100000
1 ≤ a[i] ≤ 1018
folosindu-ne de Sortarea prin selecție a vectorilor

Răspunsuri la întrebare

Răspuns de Sergetec
1

Salut!

Ai mai jos rezolvarea in limbajul C++

#include <fstream>

using namespace std;

ifstream cin("creioane.in");

ofstream cout("creioane.out");

int main()

{

 int n, a[100001];

 cin >> n;

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

 {

   cin >> a[i];

 }

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

 {

   for (int j = i + 1; j <= n; ++j)

   {

     if (a[i] > a[j])

     {

       swap(a[i], a[j]);

     }

   }

 }

 int mini = 10000000;

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

 {

   if (a[i + 1] - a[i] < mini)

   {

     mini = a[i + 1] - a[i];

   }

 }

 cout << mini;

 return 0;

}

Alte întrebări interesante