Cod sursa(job #150050)

Utilizator Adriana_SAdriana Sperlea Adriana_S Data 6 martie 2008 15:37:43
Problema Multimi2 Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.76 kb
#include <stdio.h>

int main()
{
	freopen("multimi2.in", "r", stdin);
#ifndef _SCREEN_
	freopen("multimi2.out", "w", stdout);
#endif

	int N;
	scanf("%d\n", &N);

	if (N % 2 == 0) {
		if (N == 2) printf("1\n1\n1\n1\n2\n");
		else {
			if ((N / 2) % 2 == 0) {
				printf("0\n");

				printf("%d\n", N / 2);
				for (int i = 1; i <= N / 2; i += 2) printf("%d %d ", i, N - i + 1);
				printf("\n");

				printf("%d\n", N / 2);
				for (int i = 2; i <= N / 2; i += 2) printf("%d %d ", i, N - i + 1);
				printf("\n");
			} else {
				printf("1\n");

				printf("%d\n", N / 2);
				for (int i = 1; i < N / 2; i += 2) printf("%d %d ", i, N - i + 1);
				printf("%d\n", N / 2);

				printf("%d\n", N / 2);
				for (int i = 2; i < N / 2; i += 2) printf("%d %d ", i, N - i + 1);
				printf("%d\n", N / 2 + 1);
			}
		}
	} else {
		if (N - 3 >= 4) {
			N -= 3;
			if ((N / 2) % 2 == 0) {
				printf("0\n");

				printf("%d\n", N / 2 + 2);
				printf("1 2 ");
				for (int i = 1; i <= N / 2; i += 2) printf("%d %d ", i + 3, N - i + 4);
				printf("\n");

				printf("%d\n", N / 2 + 1);
				printf("3 ");
				for (int i = 2; i <= N / 2; i += 2) printf("%d %d ", i + 3, N - i + 4);
				printf("\n");
			} else {
				printf("1\n");

				printf("%d\n", N / 2 + 2);
				printf("1 2 ");
				for (int i = 1; i < N / 2; i += 2) printf("%d %d ", i + 3, N - i + 4);
				printf("%d\n", N / 2);

				printf("%d\n", N / 2 + 1);
				printf("3 ");
				for (int i = 2; i < N / 2; i += 2) printf("%d %d ", i + 3, N - i + 4);
				printf("%d\n", N / 2 + 1);
			}
		} else {
			if (N - 3 == 2) {
				printf("1\n");
				printf("3\n");
				printf("1 2 5\n");
				printf("2\n");
				printf("3 4\n");
			} else {
				if (N - 3 == 0) {
					printf("0\n2\n");
					printf("1 2\n");
					printf("1\n3\n");
				}
			}
		}
	}

	return 0;
}