Advertisement
yuawn

algo2017_week4_cycle_problen

Oct 18th, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.74 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #define MAX 1e5
  3. using namespace std;
  4.  
  5. map<int,int> mp;
  6.  
  7. int build( int n ){
  8.     int d;
  9.     if( mp[n] ) return mp[n];
  10.     if( n&1 ) {
  11.         mp[n] = build( 3 * n + 1 ) + 1;
  12.         return mp[n];
  13.     }
  14.     else{
  15.         mp[n] = build( n / 2 ) + 1;
  16.         return mp[n];
  17.     }
  18. }
  19.  
  20.  
  21. int main(){
  22.     int a , b;
  23.     mp[1] = 1;
  24.  
  25.     for( int i = 1 ; i < MAX ; i++ ) build( i );
  26.  
  27.     while( cin >> a >> b ){
  28.         int max = -1;
  29.         bool p = 0;
  30.         if( a > b ) a ^= b , b ^= a , a ^= b , p = 1;
  31.         for( int i = a ; i < b + 1 ; i++ ) {
  32.             if( mp[i] ) max = mp[i] > max ? mp[i] : max;
  33.             else {
  34.                 int tmp = build(i);
  35.                 max = tmp > max ? tmp : max;
  36.             }
  37.         }
  38.         if(p) printf( "%d %d %d\n" , b , a , max );
  39.         else printf( "%d %d %d\n" , a , b , max );
  40.     }
  41.     return 0;
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement