fbpx

Problema #558 – Cartonase2 – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

Supărat că Gigel a reușit, cu ajutorul vostru ( vezi problema Cartonașe ), să refacă progresia aritmetică scrisă pe cele n cartonașe, maleficul Costel este hotărât să intervină din nou.

Astfel, observă că Gigel a notat din nou pe n cartonașe cei n termeni consecutivi ai unei progresii aritmetice. Profitând de lipsa acestuia, Costel a ascuns un număr oarecare de cartonașe și le-a amestecat pe celelalte.

La întoarcere, Gigel constată lipsa a m cartonașe și vă roagă să-l ajutați să afle care sunt valorile scrise pe cartonașele care lipsesc.

Date de intrare

Programul citește de la tastatură numerele n m, cu semnificația de mai sus, apoi n-m numere naturale, reprezentând valorile scrise pe cartonașele care nu au fost ascunse.

Date de ieșire

Programul va afișa pe ecran m numere ordonate crescător, separate prin exact un spaţiu, reprezentând valorile scrise pe cartonașele ascunse.

Restricții și precizări

  • 4 ≤ n ≤ 1000
  • 1 ≤ m ≤ n-2
  • valorile scrise de Gigel pe cele n cartonașe 1.000.000.000
  • Costel nu va lua niciodată primul sau ultimul cartonaș

Exemplu

Intrare

6 2
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 două, și anume 10 și 16.

#include <bits/stdc++.h>

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

S-ar putea sa iti placa