Cod sursa(job #109315)

Utilizator alex_mircescuAlex Mircescu alex_mircescu Data 25 noiembrie 2007 10:10:27
Problema Multimi2 Scor 50
Compilator cpp Status done
Runda preONI 2008, Runda 1, Clasele 5-8 Marime 1.09 kb
#include <stdio.h>
#include <math.h>
#include <stdlib.h>

long long middle, aux, i, n,  o, sum;
long v[100010], fo[1000100];

int cmp (const void * a, const void * b) {
  return ( *(int*)a - *(int*)b );
}


int main() {
	freopen("multimi2.in", "r", stdin);
	freopen("multimi2.out", "w", stdout);
	scanf("%lld", &n);
	/*max_fin = 0;
	for (i = 1; i <= n; ++i) {
		for (j = 1; j <= max_fin; ++j) {
			if (v[j] == 1) {
				v[j + i] = 1;
				if (j + i > max_fin) {
					max_fin = j + i;
				}
			}
		}
		v[i] = 1;f
		if (i > max_fin) {
			max_fin = i;
		}			
	}*/
	middle = (long long)n * (n + 1) / 4;
	sum = (long long)n * (n + 1) / 2;
	printf("%lld\n", (sum - middle) - middle);
	aux = 0;
	for (i = n; i >= 1; --i) {
		if (aux + i <= middle) {
			v[++o] = i;
			aux = aux + i;
			fo[i] = 1;
		}
		if (aux == middle) {
			break;
		}
	}
	printf("%lld\n", o);
	for (i = 1; i <= o; ++i) {
		printf("%ld ", v[i]);
	}
	printf("\n");
	printf("%lld\n", n - o);
	for (i = 1; i <= n; ++i) {
		if (fo[i] == 0) {
			printf("%lld ", i);
		}
	}
	printf("\n");
	return 0;
}