Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int main() {
- // ios_base::sync_with_stdio(0), cin.tie(0);
- string S; getline(cin, S);
- int N; cin >> N;
- char zigzag, pooling; cin >> zigzag >> pooling;
- int poolsz; cin >> poolsz;
- if (zigzag == 'b') reverse(begin(S), end(S));
- vector<string> board(N);
- for (int i = 0; i < N; ++i) board[i] = S.substr(i*N, N);
- auto valid = [&](int r, int c) -> bool {
- return (0 <= r and r < N and 0 <= c and c < N);
- };
- string zigstr;
- for (int sum = 0; sum <= 2*N-2; ++sum) {
- if (sum & 1) {for (int r = 0, c = sum; c >= 0; ++r, --c) if (valid(r, c)) zigstr += board[r][c];}
- else {for (int c = 0, r = sum; r >= 0; ++c, --r) if (valid(r, c)) zigstr += board[r][c];}
- }
- for (int i = 0; i < N; i += poolsz) {
- for (int j = 0; j < N; j += poolsz) {
- int mx = 0, sum = 0;
- for (int x = 0; x < poolsz; ++x) {
- for (int y = 0; y < poolsz; ++y) {
- mx = max(mx, (int)zigstr[(i+x)*N + (j+y)]);
- sum += zigstr[(i+x)*N + (j+y)];
- }
- }
- cout << (char)(pooling == 'a' ? sum / poolsz / poolsz : mx);
- }
- }
- cout << "\n";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement