Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- using namespace std;
- ifstream fin("tablou.in");
- ofstream fout("tablou.out");
- int a[105][105];
- int main()
- {
- int n, S, k, s, i, j, x;
- fin >> n >> S;
- if (1LL * n * n * (n + 1) / 2 > S)
- {
- fout << "0\n";
- fout.close();
- return 0;
- }
- s = S / n;
- for (k = 1; 1LL * k * n + 1LL * n * (n - 1) / 2 <= s; k++)
- ;
- k--;
- /// prima linie:
- x = 0;
- for (i = 1; i <= n; i++)
- {
- a[1][i] = k + i - 1;
- x += a[1][i];
- }
- /// restul liniilor:
- for (i = 2; i <= n; i++)
- {
- for (j = 1; j < n; j++)
- a[i][j] = a[i - 1][j + 1];
- a[i][n] = a[i - 1][1];
- }
- S -= n * x;
- x = S / n;
- S %= n;
- k = a[1][n] - x + 1;
- for (i = 1; i <= n; i++)
- for (j = 1; j <= n; j++)
- if (a[i][j] >= k) a[i][j]++;
- else if (a[i][j] == k - 1 && S > 0)
- {
- a[i][j]++;
- S--;
- }
- for (i = 1; i <= n; i++)
- {
- for (j = 1; j <= n; j++)
- fout << a[i][j] << " ";
- fout << "\n";
- }
- fin.close();
- fout.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement