Advertisement
BoxerTC

Untitled

Jun 14th, 2015
247
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.13 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.         vvi vec( K );
  36.         vi cap( K , T );
  37.         for( int cur = n ; cur >= 1 ; --cur ){
  38.             int maxi = INT_MIN , id = -1;
  39.             REP( i , K )
  40.                 if( cap[ i ] >= cur && cap[ i ] > maxi ){
  41.                     maxi = cap[ i ];
  42.                     id = i;
  43.                 }
  44.             if( id == -1 ){
  45.                 puts( "NO" );
  46.                 return 0;
  47.             }
  48.             cap[ id ] -= cur;
  49.             vec[ id ].pb( cur );
  50.         }
  51.         for( auto ans : vec ) {
  52.             printf( "%d\n" , SZ(ans) );
  53.             REP( i , SZ(ans) ) printf( "%d%c" , ans[ i ] , (i + 1 == SZ(ans)) ? 10 : 32  );
  54.         }
  55.     }
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement