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
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema Stergeri:
#include <iostream>
#include <cassert>
using namespace std;
int n , m , v[1005], s[1005], R[1005];
int main() {
assert(cin >> n >> m);
for(int k = 1 ; k <= n ; ++k)
{
for (int i = 1; i <= m; ++i)
{
assert(cin >> v[i]);
assert(v[i]<= 1000);
}
for (int i = 1; i <= m; ++i)
s[i] = s[i-1] + v[i];
int p = 0;
for(int i = 1 ; i <= m ; ++i)
if(s[i] == s[m] - s[i])
p = i;
R[k] = p;
}
for(int i = 1; i <= n ; ++i)
cout << R[i] << " " << m - R[i] << "
";
return 0;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #569 Stergeri
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #569 Stergeri de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!