Cerința
Gigel a învățat la matematică adunarea mai multor termeni și acum lucrează la temă. Aceasta constă în scrierea a n
egalități, fiecare fiind formată din m
termeni, dispuși în ordine în stânga și în dreapta semnului =. Gigel a reușit să-și facă tema, însă maleficul Costel a profitat de neatenția lui Gigel și a șters toate semnele dintre numerele scrise, atât cele de adunare(+) cât și semnul egal(=). Ajutați-l pe Gigel să reconstituie egalitățile la care a lucrat.
Date de intrare
Programul citește de la tastatură numerele n m
, iar apoi n
șiruri cu câte m
numere naturale, fiecare șir reprezentând termenii dintr-o egalitate.
Date de ieșire
Programul va afișa pe ecran numărul n
perechi de numere s d
. Acestea corespund, în ordine, fiecărei egalități și anume s
reprezintă numărul de termeni din stângă semnului =, iar d
reprezintă numărul de termeni din dreapta semnului =.
Restricții și precizări
1 ≤ n ≤ 1000
1 ≤ m ≤ 1000
- pentru fiecare egalitate termenii sunt numere naturale nenule mai mici decât
1000
- toate egalitățile scrise de Gigel au fost inițial corecte
- pentru fiecare egalitate
s+d=m
- maleficul Costel nu a modificat ordinea termenilor
Exemplu
Intrare
3 5 1 2 3 1 5 7 4 3 1 15 1 7 2 3 3
Ieșire
3 2 4 1 2 3
Explicație
Pentru prima egalitate, 1 + 2 + 3 = 1 + 5
#include <bits/stdc++.h> using namespace std; int main() { int n , m , a[1000] , st[1000] , dr[1000]; cin >> n >> m; for(int i = 1 ; i <= n ; i++) { int s = 0 , s1 = 0; for(int j = 1 ; j <= m ; j++) { cin >> a[j]; s += a[j]; } for(int j = 1 ; j <= m ; j++) { s1 += a[j]; if(s1 == s / 2) st[i] = j , dr[i] = m - j; } } for(int i = 1 ; i <= n ; i++) { cout << st[i] << ' ' << dr[i] << '\n'; } }