Problem:
タイル (Tile)
問題
JOI 高校では， 1 × 1 の正方形のタイルを使って N × N の正方形の壁画を作り，文化祭で展示することになった．タイルの色は，赤，青，黄の 3 種類である．壁画のデザインは次の通りである．まず，最も外側の周に赤のタイルを貼り，その内側の周に青のタイルを貼る．さらにその内側の周に黄色のタイルを貼る．これを N × N の正方形が埋め尽くされるまで繰り返す．用いるタイルの色は，一番外側の周から順番に赤，青，黄，赤，青，黄，…である．
文化祭が近づいてきたある日，壁画のうち K 枚のタイルがはがれていることが判明した．そこで，新しいタイルを購入して，はがれた箇所に新しいタイルを貼ることにした．
入力として壁画の一辺の長さ N と，はがれたタイルの枚数 K， K 枚のはがれたタイルの位置が与えられたとき，はがれたタイルの色を求めるプログラムを作成せよ．
例えば，N = 11 の場合，11 × 11 の壁画のデザインは下図の通りである．
また，N = 16 の場合，16 × 16 の壁画のデザインは下図の通りである．
入力
入力は全部で 2+K 行からなる． 1 行目には，壁画の一辺の長さ N （1 ≤ N ≤ 1000000000 = 10
9
）が， 2 行目には，はがれたタイルの枚数 K （1 ≤ K ≤ 1000）が書かれている． 2+i 行目（1 ≤ i ≤ K）には，2 つの整数 ai と bi （1 ≤ ai ≤ N, 1 ≤ bi ≤ N）が空白区切りで書かれており， i 枚目のはがれたタイルが，左から ai 列目，上から bi 行目のタイルであることを表す．
入力の 3 行目から 2+K 行目には同じタイルを表す行が重複して現れることはない．また，与えられる入力データ 40% では， N ≤ 1000 をみたしている．
出力
出力は K 行からなる．各行は 1 つの整数からなり， i 行目（1 ≤ i ≤K）の整数は，i 枚目のはがれたタイルが赤のときは 1 を，青のときは 2 を，黄色のときは 3 を表す．
入出力例
入力例 1
11
4
5 2
9 7
4 4
3 9
出力例 1
2
3
1
3
入力例 2
16
7
3 7
5 2
11 6
15 2
9 7
8 12
15 16
出力例 2
3
2
3
2
1
2
1
問題文と自動審判に使われるデータは、
情報オリンピック日本委員会
が作成し公開している問題文と採点用テストデータです。

Submitted solutions:

code_snippet: #include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0; i<n; i++)
int main(){
  int n;
  cin >> n;
  int t[n][n]={};
  int a,b,h=0,w=0;
  int cnt=1;
  while(1){
    for(int i=h; i<n-h; i++){
      for(int j=w; j<n-w; j++){
        t[i][j] = cnt;
      }
    }
    h++;
    w++;
    cnt++;
    if(cnt==4) cnt = 1;
    if(h==n/2+1) break;
  }
  /*rep(i,n){
    rep(j,n){
      cout << t[i][j];
    }
    cout << endl;
  }*/
  int k;
  cin >> k;
  rep(i,k){
    cin >> a >> b;
    cout << t[a-1][b-1] << endl;
  }
  return 0;
}
accuracy: 0.4
time_ms: 70
memory_kb: 6980
final_rank: 4

code_snippet: #include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0; i<n; i++)
int main(){
  int n;
  cin >> n;
  int t[n+10][n+10]={};
  int a,b,h=0,w=0;
  int cnt=1;
  while(1){
    for(int i=h; i<n-h; i++){
      for(int j=w; j<n-w; j++){
        t[i][j] = cnt;
      }
    }
    h++;
    w++;
    cnt++;
    if(cnt==4) cnt = 1;
    if(h==n/2+1) break;
  }
  /*rep(i,n){
    rep(j,n){
      cout << t[i][j];
    }
    cout << endl;
  }*/
  int k;
  cin >> k;
  rep(i,k){
    cin >> a >> b;
    cout << t[a-1][b-1] << endl;
  }
  return 0;
}
accuracy: 0.4
time_ms: 70
memory_kb: 7036
final_rank: 5

code_snippet: #include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
long long n,a,b,f,m,i;
cin>>n;
cin>>f;
for(i=0;i<f;i++){
	cin>>a>>b;
	if(a>b){
	m=a;
	a=b;
	b=m;
	}
	m=min(a,n+1-b);
	m=m%3;
	if(m==0)m=3;
	cout<<m<<endl;
}
return 0;
}
accuracy: 1
time_ms: 10
memory_kb: 3080
final_rank: 3

code_snippet: #include<stdio.h>
long long int hideo, masao, koutay, nagase, a[1010][1010] = { 0 }, y = 0, z = 0;
	long long int str[1011][1011] = { 0 };
	int main(){
	scanf("%d", &hideo);
	for (int x = 0; x < hideo; x++) {
		for (int i = z; i < hideo - z; i++) {
			for (int j = z; j < hideo - z; j++) {
				if (y == 0) {
					str[i][j] = 1;
				}
				else if (y == 1) {
					str[i][j] = 2;
				}
				else {
					str[i][j] = 3;
				}
			}
		}
		z++;
		y++;
		if (y == 3)y = 0;
	}
	scanf("%d", &masao);
	for (int i = 0; i < masao; i++) {
		scanf("%d %d", &koutay, &nagase);
		printf("%d\n", str[koutay - 1][nagase - 1]);
	}
}
accuracy: 0.4
time_ms: 90
memory_kb: 18372
final_rank: 9

code_snippet: #include<stdio.h>
	unsigned int hideo, masao, koutay, nagase, a[1010][1010] = { 0 }, y = 0, z = 0;
	int str[1011][1011] = { 0 };
	int main(){
	scanf("%d", &hideo);
	for (int x = 0; x < hideo; x++) {
		for (int i = z; i < hideo - z; i++) {
			for (int j = z; j < hideo - z; j++) {
				if (y == 0) {
					str[i][j] = 1;
				}
				else if (y == 1) {
					str[i][j] = 2;
				}
				else {
					str[i][j] = 3;
				}
			}
		}
		z++;
		y++;
		if (y == 3)y = 0;
	}
	scanf("%d", &masao);
	for (int i = 0; i < masao; i++) {
		scanf("%d %d", &koutay, &nagase);
		printf("%d\n", str[koutay - 1][nagase - 1]);
	}
}
accuracy: 0.4
time_ms: 90
memory_kb: 10456
final_rank: 8

code_snippet: #include<stdio.h>
	int hideo, masao, koutay, nagase, a[1001][1001] = { 0 }, y = 0, z = 0;
	int str[1001][1001] = { 0 };
	int main()
	{
	scanf("%d", &hideo);
	for (int x = 0; x < hideo; x++) {
		for (int i = z; i < hideo - z; i++) {
			for (int j = z; j < hideo - z; j++) {
				if (y == 0) {
					str[i][j] = 1;
				}
				else if (y == 1) {
					str[i][j] = 2;
				}
				else {
					str[i][j] = 3;
				}
			}
		}
		z++;
		y++;
		if (y == 3)y = 0;
	}
	scanf("%d", &masao);
	for (int i = 0; i < masao; i++) {
		scanf("%d %d", &koutay, &nagase);
		printf("%d\n", str[koutay - 1][nagase - 1]);
	}
}
accuracy: 0.4
time_ms: 90
memory_kb: 10304
final_rank: 7

code_snippet: #include<stdio.h>
int main()
{
	int hideo, masao, koutay, nagase, a[1001][1001] = { 0 }, y = 0, z = 0;
	int str[1001][1001] = { 0 };
	scanf("%d", &hideo);
	for (int x = 0; x < hideo; x++) {
		for (int i = z; i < hideo - z; i++) {
			for (int j = z; j < hideo - z; j++) {
				if (y == 0) {
					str[i][j] = 1;
				}
				else if (y == 1) {
					str[i][j] = 2;
				}
				else {
					str[i][j] = 3;
				}
			}
		}
		z++;
		y++;
		if (y == 3)y = 0;
	}
	scanf("%d", &masao);
	for (int i = 0; i < masao; i++) {
		scanf("%d %d", &koutay, &nagase);
		printf("%d\n", str[koutay - 1][nagase - 1]);
	}
}
accuracy: 0.4
time_ms: 80
memory_kb: 6640
final_rank: 6

code_snippet: #include<bits/stdc++.h>
using namespace std;
int main()
{
  int n, k;
  cin >> n >> k;

  while(k--){
    int a, b;
    cin >> a >> b;
    cout << (min( min( n - a + 1, a), min(  n - b + 1, b)) + 2) % 3 + 1 << endl;
  }
  
  return(0);
}
accuracy: 1
time_ms: 10
memory_kb: 1160
final_rank: 1

code_snippet: #include <iostream>
#include <cmath>
using namespace std;

int main() {
	long long int n;
	int k;
	cin >> n >> k;
	long long int a, b, c;
	for (int i = 0; i < k; i++) {
		cin >> a >> b;
		a = min(a, n+1-a);
		b = min(b, n+1-b);
		c = min(a, b);
		c = c%3;
		if (c == 0) {
			c = 3;
		}
		cout << c << endl;
	}
}
accuracy: 1
time_ms: 10
memory_kb: 1164
final_rank: 2