Cod sursa(job #166833)

Utilizator scvalexAlexandru Scvortov scvalex Data 28 martie 2008 15:48:33
Problema Dame Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <iostream>
#include <vector>

using namespace std;

vector<int> l;

int main(int argc, char *argv[]) {
	FILE *fi = fopen("dame.in", "r");
	int N;
	fscanf(fi, "%d", &N);
	fclose(fi);

	if (N <= 2) {
		FILE *fo = fopen("dame.out", "w");
		fprintf(fo, "1\n1 1\n");
		fclose(fo);
		return 0;
	}
	if (N == 3) {
		FILE *fo = fopen("dame.out", "w");
		fprintf(fo, "2\n1 1\n2 3\n");
		fclose(fo);
		return 0;
	}

	int r = N % 12;
	int s = 2;
	if ((r == 3) || (r == 9))
		s = 4;
	for (int i = s; i <= N; i += 2)
		l.push_back(i);
	if ((r == 3) || (r == 9))
		l.push_back(2);
	
	if (r == 8) {
		for (int i = 2; i + 1 < N; i += 4)
			l.push_back(i + 1),
			l.push_back(i - 1);
	} else if (r == 2) {
		l.push_back(3);
		l.push_back(1);
		for (int i = 7; i <= N; i += 2)
			l.push_back(i);
		l.push_back(5);
	} else if ((r == 3) || (r == 9)) {
		for (int i = 5; i <= N; i += 2)
			l.push_back(i);
		l.push_back(1);
		l.push_back(3);
	}

	/*for (int i(0); i < (int)l.size(); ++i)
		cout << l[i] << " ";
	cout << endl;*/

	FILE *fo = fopen("dame.out", "w");
	fprintf(fo, "%d\n", N);
	for (int i(0); i < (int)l.size(); ++i)
		fprintf(fo, "%d %d\n", i + 1, l[i]);
	fclose(fo);

	return 0;
}