Pagini recente » Cod sursa (job #2223761) | Cod sursa (job #3130827) | Cod sursa (job #66428) | Cod sursa (job #2870538) | Cod sursa (job #1737469)
#include <bits/stdc++.h>
#define nmax 50005
using namespace std;
int n,s,poz;
long long sum;
vector <int> a,b;
int main()
{
int i,j;
freopen("multimi2.in","r",stdin);
freopen("multimi2.out","w",stdout);
scanf("%d",&n);
s=(1LL*n*(n+1)/2)%2;
srand(time(0));
for (i=1;i<=n;i++) {
if (sum>s) {
sum-=i;
a.push_back(i);
}
else {
sum+=i;
b.push_back(i);
}
}
while (sum!=s&&sum!=-s) {
poz=1LL*rand()*rand()%n;
if (b.size()==0||(a.size()&&sum<s)) {
poz%=a.size();
b.push_back(a[poz]);
sum+=2*a[poz];
swap(a[poz],a[a.size()-1]);
a.pop_back();
}
else {
poz%=b.size();
a.push_back(b[poz]);
sum-=2*b[poz];
swap(b[poz],b[b.size()-1]);
b.pop_back();
}
}
printf("%d\n",s);
printf("%d\n",a.size());
for (i=0;i<a.size();i++)
printf("%d ",a[i]);
printf("\n%d\n",b.size());
for (i=0;i<b.size();i++)
printf("%d ",b[i]);
return 0;
}