BoxerTC

Untitled

Jun 15th, 2015
358
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.19 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define sc(x) scanf( "%d" , &x )
  5. #define REP(i , n) for( int i = 0 ; i < (n) ; ++i )
  6. #define clr( t , val ) memset( t , val , sizeof( t ) )
  7.  
  8. #define pb push_back
  9. #define all(v) v.begin() , v.end()
  10. #define SZ(v) ((int)(v).size())
  11.  
  12. #define mp make_pair
  13. #define fi first
  14. #define se second
  15.  
  16. #define DEBUG( x ) cerr << #x << " " << x << endl;
  17.  
  18. #define N 5000
  19.  
  20. typedef long long ll;
  21. typedef vector< int > vi;
  22. typedef vector< vi > vvi;
  23.  
  24. int main(){
  25.     int n , K;
  26.     while( sc( n ) == 1 ){
  27.         sc( K );
  28.         ll T = (ll)n * (ll)(n + 1);
  29.         T /= 2;
  30.         if( T % K ){
  31.             puts( "NO" );
  32.             continue;
  33.         }
  34.         T /= K;
  35.         set< int > SET;
  36.         REP( i , n ) SET.insert( i + 1 );
  37.         vvi vec;
  38.         while( 1 ){
  39.             if( !SZ( SET ) ) break;
  40.             ll cur = T;
  41.             vi ans;
  42.             while( 1 ){
  43.                 if( !cur ) break;
  44.                 auto it = SET.upper_bound( cur );
  45.                 if( it == SET.begin() ){
  46.                     puts( "NO" );
  47.                     return 0 ;
  48.                 }
  49.                 it --;
  50.                 ans.pb( *it );
  51.                 cur -= *it;
  52.                 SET.erase( it );
  53.             }
  54.             vec.pb( ans );
  55.         }
  56.         for( auto ans : vec ) {
  57.             printf( "%d\n" , SZ(ans) );
  58.             REP( i , SZ(ans) ) printf( "%d%c" , ans[ i ] , (i + 1 == SZ(ans)) ? 10 : 32  );
  59.         }
  60.     }
  61. }
Advertisement
Add Comment
Please, Sign In to add comment