Advertisement
Iwanicki

Sumy III

Mar 20th, 2013
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.99 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. void sumy( int number );
  5. template<class T>
  6. std::ostream& operator<<(std::ostream& os, const std::vector<T>& vec)
  7. {
  8.     for( unsigned int i = 0; i < vec.size(); i++)
  9.     {
  10.         os<<vec[i]<<" ";
  11.     }
  12.     return os;
  13. }
  14.  
  15. int main()
  16. {
  17.     int t, x;
  18.     std::cin>>t;
  19.     while( t-- )
  20.     {
  21.         std::cin>>x;
  22.         sumy( x );
  23.         std::cout<<"\n";
  24.     }
  25.     return 0;
  26. }
  27.  
  28. void sumy( int number )
  29. {
  30.     int r = number%2 == 0 ? number-1 : number;
  31.  
  32.     std::vector< int > stack;
  33.     stack.push_back( r );
  34.     int suma = r;
  35.  
  36.     while( stack.empty() == false )
  37.     {
  38.         if( suma == number )
  39.         {
  40.             std::cout<<stack<<"\n";
  41.             while( stack.empty() == false && stack.back() == 1 )
  42.             {
  43.                 suma -= stack.back();
  44.                 stack.pop_back();
  45.             }
  46.             if( stack.empty() == false )
  47.             {
  48.                 stack.back() = stack.back() - 2;
  49.                 r = stack.back();
  50.                 suma -= 2;
  51.             }
  52.         }
  53.         else if( suma + r > number )
  54.         {
  55.             r -= 2;
  56.         }
  57.         else if( suma + r <= number )
  58.         {
  59.             stack.push_back( r );
  60.             suma += r;
  61.         }
  62.  
  63.     }
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement