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șe1.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++; } }