Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int N, M; cin >> N >> M; int A, B; cin >> A >> B;
- ll G, X, Y, Z; cin >> G >> X >> Y >> Z;
- ll data[N][M];
- F0R(i, N) {
- F0R(j, M) {
- data[i][j] = G;
- G = (G*X+Y)%Z;
- }
- }
- ll slideRow[N][M-B+1];
- F0R(i, N) {
- priority_queue<pi> pq;
- F0R(j, B-1) {
- pq.push(mp(data[i][j] * -1, j));
- }
- FOR(j, B-1, M) {
- pq.push(mp(data[i][j] * -1, j));
- while (pq.top().s <= j-B) pq.pop();
- slideRow[i][j-B+1] = pq.top().f * -1;
- }
- }
- ll sum = 0;
- F0R(j, M-B+1) {
- priority_queue<pi> pq;
- F0R(i, A-1) {
- pq.push(mp(slideRow[i][j] * -1, i));
- }
- FOR(i, A-1, N) {
- pq.push(mp(slideRow[i][j] * -1, i));
- while (pq.top().s <= i-A) pq.pop();
- sum += pq.top().f * -1;
- }
- }
- cout << sum << endl;
Advertisement
Add Comment
Please, Sign In to add comment