Pagini recente » Cod sursa (job #126871) | Cod sursa (job #136976) | Cod sursa (job #587776) | Cod sursa (job #104297) | Cod sursa (job #3222891)
#include <fstream>
using namespace std;
ifstream cin ("multimi2.in");
ofstream cout ("multimi2.out");
#define N 1000000
#define D 0
int f[N+5], v1[N+5], v2[N+5];
int main()
{
int n,i,p,n1,n2,x;
unsigned long long int s,sum,k,a,b,dif;
cin >> n;
s=0;
for (i=1; i<=n; i++)
s+=i;
cout << s%2 << '\n';
k=s/2;
if (s%2==1)
k++;
sum=p=0;
for (i=n; i>s%2; i--){
if (sum+i<=k){
sum+=i;
f[i]=1;
}else
break;
}
x=0;
if (sum<=k)
for (i=s%2+1; i<=n; i++){
if (sum+i<=k){
if (i>x)
x=i;
sum+=i;
f[i]=1;
}else
break;
}
n1=n2=0;
for (i=1; i<=n; i++)
if (f[i]==1)
v1[n1++]=i;
for (i=1; i<=n; i++)
if (f[i]==0)
v2[n2++]=i;
a=b=0;
for (i=1; i<=n; i++){
if (f[i]==0)
a+=i;
else
b+=i;
}
dif=a-b;
dif/=2;
for (i=0; i<n1; i++)
if (v1[i]==(unsigned long long)x)
v1[i]=(unsigned long long)x+dif;
for (i=0; i<n2; i++)
if (v2[i]==(unsigned long long)x+dif)
v2[i]=(unsigned long long)x;
cout << n1 << '\n';
for (i=0; i<n1; i++)
cout << v1[i] << ' ';
cout << '\n' << n2 << '\n';
for (i=0; i<n2; i++)
cout << v2[i] << ' ';
if (D)
cout << '\n' << b << ' ' << a << '\n';
return 0;
}