Pagini recente » Cod sursa (job #666171) | Borderou de evaluare (job #1431102) | Cod sursa (job #511479) | Clasamentul arhivei educationale | Cod sursa (job #3143823)
#include <fstream>
using namespace std;
ifstream cin ("piese.in");
ofstream cout ("piese.out");
int matrice[502][502];
int main ()
{
int linii , coloane;
cin >> linii >> coloane;
int piese = 0;
for (int linie = 1 ; linie <= linii ; linie++)
for (int coloana = 1 ; coloana <= coloane ; coloana++)
if (!(matrice[linie][coloana] += matrice[linie - 1][coloana] + matrice[linie][coloana - 1] - matrice[linie - 1][coloana - 1]))
{
int lungime = 1;
while (linie + (lungime << 1) - 1 <= linii && coloana + (lungime << 1) - 1 <= coloane)
lungime <<= 1;
matrice[linie][coloana] += ++piese;
matrice[linie][coloana + lungime] -= piese;
matrice[linie + lungime][coloana] -= piese;
matrice[linie + lungime][coloana + lungime] += piese;
}
cout << piese << '\n';
for (int linie = 1 ; linie <= linii ; linie++) {
for (int coloana = 1 ; coloana <= coloane ; coloana++)
cout << matrice[linie][coloana] << ' ';
cout << '\n';
}
cout.close(); cin.close();
return 0;
}