fbpx

Problema #569 – Stergeri – Rezolvari PBInfo

de Mihai-Alexandru

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';
    }
}
Comentarii

S-ar putea sa iti placa