Pagini recente » Cod sursa (job #2775322) | Cod sursa (job #340959) | Cod sursa (job #1390948) | Cod sursa (job #1737924) | Cod sursa (job #110152)
Cod sursa(job #110152)
#include<stdio.h>
long long n , s , dmin ;
int main ( )
{
freopen ( "multimi2.in" , "r" , stdin ) ;
freopen ( "multimi2.out" , "w" , stdout ) ;
scanf ( "%lld" , & n ) ;
//facem suma
if ( n & 1 )
s = ( n / 2 ) * ( n + 1 ) ;
else
s = ( n ) * ( ( n + 1 ) / 2 ) ;
if ( s & 1 )
dmin = 1 ;
else
dmin = 0 ;
s >>= 1 ;
printf ( "%lld\n" , dmin ) ;
//scadem numerele mai mari
long long p = n , start = n , stop , nr = 0 , m1 = 0 , m2 = 0 ;
while ( s > 0 )
{
if ( s < p ) // vom scade acel s pt ca s sa fie 0 si vom memora
{
nr = s ;
++ m1 ;
s-= s ;
}
else
if ( s >= p )
{
s-= p ;
++ m1 ;
-- p ;
}
}
stop = p + 1 ; // acum in cealalta multime vom pune toate numerele
printf ( "%lld\n" , m1 ) ;
if ( nr ) printf ( "%lld " , nr ) ;
long long i ;
for ( i = stop ; i <= start ; i ++ )
printf ( "%lld " , i ) ;
//pentru a 2a multime
m2 = n - m1 ;
printf ( "\n%lld\n" , m2 ) ;
for ( i = 1 ; i < stop ; i ++ )
if ( i != nr )
printf ( "%lld " , i ) ;
return 0 ;
}