CodeforcesJun 08, 2025

Numbers on the Chessboard

Hazrat Ali

Codeforces

You are given a chessboard of size n×nn×n. It is filled with numbers from 11 to n2n2 in the following way: the first n22⌈n22⌉ numbers from 11 to n22⌈n22⌉ are written in the cells with even sum of coordinates from left to right from top to bottom. The rest n2n22n2−⌈n22⌉ numbers from n22+1⌈n22⌉+1 to n2n2 are written in the cells with odd sum of coordinates from left to right from top to bottom. The operation xy⌈xy⌉ means division xx by yy rounded up.

For example, the left board on the following picture is the chessboard which is given for n=4n=4 and the right board is the chessboard which is given for n=5n=5.

You are given qq queries. The ii-th query is described as a pair xi,yixi,yi. The answer to the ii-th query is the number written in the cell xi,yixi,yi (xixi is the row, yiyi is the column). Rows and columns are numbered from 11 to nn.

Input

The first line contains two integers nn and qq (1n1091≤n≤1091q1051≤q≤105) — the size of the board and the number of queries.

The next qq lines contain two integers each. The ii-th line contains two integers xi,yixi,yi (1xi,yin1≤xi,yi≤n) — description of the ii-th query.

Output

For each query from 11 to qq print the answer to this query. The answer to the ii-th query is the number written in the cell xi,yixi,yi (xixi is the row, yiyi is the column). Rows and columns are numbered from 11 to nn. Queries are numbered from 11 to qq in order of the input.

Examples
Input
4 5
1 1
4 4
4 3
3 2
2 4
Output
1
8
16
13
4
Input
5 4
2 1
4 2
3 3
3 4
Output
16
9
7
20

Solution
#include <bits/stdc++.h>
using namespace std;

int main() {
  long long n, q;
  cin >> n >> q;
  while (q--) {
    long long x, y;
    cin >> x >> y;
    long long ans = n * (x - 1) + y;
    ans = (ans + 1) / 2;
    long long sum = x + y;
    ans += (sum % 2 == 1) ? (n * n + 1) / 2 : 0;
    cout << ans << endl;
  }
  return 0;
}




Comments