fbpx

Problema #557 – Cartonase – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

Gigel a învățat la școală despre progresii aritmetice – o progresie aritmetică este un șir de numere cu proprietatea că diferența dintre oricare două valori consecutive este aceeași. Astfel, Gigel a notat pe n cartonașe cei n termeni consecutivi ai unei progresii aritmetice și a plecat la joacă. Maleficul Costel a ascuns exact două dintre cartonașe și le-a amestecat pe celelalte.

Determinaţi valorile scrise pe cele două cartonaşe ascunse de Costel.

Date de intrare

Programul citește de la tastatură numărul n, iar apoi n-2 numere naturale, reprezentând valorile scrise pe cartonașele care nu au fost ascunse.

Date de ieșire

Programul va afișa pe ecran două numere x y, separate prin exact un spaţiu, reprezentând valorile scrise pe cartonașele ascunse.

Restricții și precizări

  • 4 ≤ n ≤ 1000
  • valorile scrise de Gigel pe cele n cartonașe sunt mai mici decât 1.000.000.000
  • Costel nu va lua niciodată primul sau ultimul cartonaș
  • x < y

Exemplu

Intrare

6
13 19 7 4

Ieșire

10 16

Explicație

Cele șase numere scrise de Gigel erau 4 7 10 13 16 19. Dintre acestea, lipsesc 10 și 16.

#include <bits/stdc++.h>

using namespace std;
int main()
{
    long long n , a[1001];
    cin >> n;
    n -= 2;
    for(int i = 0 ; i < n; ++i)
        cin >> a[i];
    sort(a , a+n);
    int r = (a[n-1]-a[0])/(n+1) , p = 1;
    int x = a[0];
    for(int i = 0 ; i < n+1 ; ++i)
    {
        x += r;
        if(x!=a[p]) cout << x << " ";
        else p++;
    }
}
Comentarii

S-ar putea sa iti placa