#include <iostream>
using namespace std;
int main( ) {
vector< int > a;
a.push_back ( 2 ) ;
a.push_back ( 4 ) ;
a.push_back ( 8 ) ;
vector< std:: vector < int >> b( 1 , vector< int > ( 2 , 0 ) ) ;
vector[ 0 ] [ 0 ] = 2 ;
vector[ 0 ] [ 1 ] = 3 ;
solve( a,b) ;
// your code goes here
return 0 ;
}
vector< int > solve( vector< int > & A, vector< vector< int > > & B) {
#define ll long long
#define mod 1000000007
int n,q,a[ 100005 ] ,l,r;
ll gcd( ll a,ll b)
{
ll x = max( a,b) ;
ll y = min( a,b) ;
if ( y== 0 ) return x;
if ( x% y == 0 ) return y;
return gcd( y,x% y) ;
}
ll fib( int n)
{
// Base cases
if ( n == 0 )
return 0 ;
if ( n == 1 || n == 2 )
return ( f[ n] = 1 ) ;
// If fib(n) is already computed
if ( f[ n] )
return f[ n] ;
int k = ( n & 1 ) ? ( n+ 1 ) / 2 : n/ 2 ;
// Applying recursive formula [Note value n&1 is 1
// if n is odd, else 0.
f[ n] = ( n & 1 ) ? ( ( ( fib( k) * fib( k) ) % mod + ( fib( k- 1 ) * fib( k- 1 ) ) % mod) % mod)
: ( ( ( 2 * fib( k- 1 ) + fib( k) ) % mod) * fib( k) ) % mod;
return f[ n] ;
}
class node{
public : int data;
node* llink;
node* rlink;
int left,right;
} ;
node* root;
node* create( int l,int r)
{
int mid = ( l+ r) / 2 ;
node* nnode = new node( ) ;
if ( l == r)
{
nnode- > data = a[ l] ;
nnode- > left = l; nnode- > right = r;
nnode- > llink = NULL ; nnode- > rlink = NULL ;
return nnode;
}
nnode- > llink = create( l , mid) ;
nnode- > rlink = create( mid+ 1 ,r) ;
nnode- > left = l;
nnode- > right = r;
nnode- > data = gcd( nnode- > llink- > data , nnode- > rlink- > data) ;
return nnode;
}
int query( node* nnode, int l,int r)
{
if ( nnode- > left > r || nnode- > right < l) return 0 ;
if ( nnode- > left >= l && nnode- > right <= r) return nnode- > data;
int a = query( nnode- > llink,l,r) ;
int b = query( nnode- > rlink,l,r) ;
return gcd( a,b) ;
}
q = B.size ( ) ;
vector< int > out;
for ( int i= 1 ; i<= n; i++ )
a[ i] = A[ i- 1 ] ;
root = create( 1 ,n) ;
for ( int i= 0 ; i< q; i++ ) {
int val = query( root,l,r) ;
cout << fib( val) << endl;
//out.push_back(fib(val));
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7Cgl2ZWN0b3I8IGludCA+IGE7CglhLnB1c2hfYmFjaygyKTsKCWEucHVzaF9iYWNrKDQpOwoJYS5wdXNoX2JhY2soOCk7Cgl2ZWN0b3I8c3RkOjp2ZWN0b3I8IGludCA+PiBiKDEsIHZlY3RvcjwgaW50ID4oMiwgMCkpOwoJdmVjdG9yWzBdWzBdID0gMjsKCXZlY3RvclswXVsxXSA9IDM7Cglzb2x2ZShhLGIpOwoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJcmV0dXJuIDA7Cn0KCnZlY3RvcjwgaW50ID4gc29sdmUodmVjdG9yPCBpbnQgPiAmQSwgdmVjdG9yPHZlY3RvcjwgaW50ID4gPiAmQikgewoKICAgICAgICAjZGVmaW5lIGxsIGxvbmcgbG9uZyAKICAgICAgICAjZGVmaW5lIG1vZCAxMDAwMDAwMDA3CiAgICAgICAgaW50IG4scSxhWzEwMDAwNV0sbCxyOwogICAgICAgIAogICAgICAgIGxsIGdjZChsbCBhLGxsIGIpCiAgICAgICAgewogICAgICAgIAlsbCB4ID0gbWF4KGEsYik7CiAgICAgICAgCWxsIHkgPSBtaW4oYSxiKTsKICAgICAgICAJaWYoeT09MClyZXR1cm4geDsKICAgICAgICAJaWYoeCV5ID09IDApcmV0dXJuIHk7CiAgICAgICAgCXJldHVybiBnY2QoeSx4JXkpOwogICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIAogICAgICAgIGxsIGZpYihpbnQgbikKICAgICAgICB7CiAgICAgICAgICAgIC8vIEJhc2UgY2FzZXMKICAgICAgICAgICAgaWYgKG4gPT0gMCkKICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICBpZiAobiA9PSAxIHx8IG4gPT0gMikKICAgICAgICAgICAgICAgIHJldHVybiAoZltuXSA9IDEpOwogICAgICAgICAKICAgICAgICAgICAgLy8gSWYgZmliKG4pIGlzIGFscmVhZHkgY29tcHV0ZWQKICAgICAgICAgICAgaWYgKGZbbl0pCiAgICAgICAgICAgICAgICByZXR1cm4gZltuXTsKICAgICAgICAgCiAgICAgICAgICAgIGludCBrID0gKG4gJiAxKT8gKG4rMSkvMiA6IG4vMjsKICAgICAgICAgCiAgICAgICAgICAgIC8vIEFwcGx5aW5nIHJlY3Vyc2l2ZSBmb3JtdWxhIFtOb3RlIHZhbHVlIG4mMSBpcyAxCiAgICAgICAgICAgIC8vIGlmIG4gaXMgb2RkLCBlbHNlIDAuCiAgICAgICAgICAgIGZbbl0gPSAobiAmIDEpPyAoKChmaWIoaykqZmliKGspKSVtb2QgKyAoZmliKGstMSkqZmliKGstMSkpJW1vZCklbW9kKQogICAgICAgICAgICAgICAgICAgOiAoKCgyKmZpYihrLTEpICsgZmliKGspKSVtb2QpKmZpYihrKSklbW9kOwogICAgICAgICAKICAgICAgICAgICAgcmV0dXJuIGZbbl07CiAgICAgICAgfQogICAgICAgICAKICAgICAgICBjbGFzcyBub2RlewogICAgICAgIAlwdWJsaWMgOiBpbnQgZGF0YTsKICAgICAgICAJbm9kZSogbGxpbms7CiAgICAgICAgCW5vZGUqIHJsaW5rOwogICAgICAgIAlpbnQgbGVmdCxyaWdodDsKICAgICAgICB9OwogICAgICAgIG5vZGUqIHJvb3Q7CiAgICAgICAgbm9kZSogY3JlYXRlKGludCBsLGludCByKQogICAgICAgIHsKICAgICAgICAJaW50IG1pZCA9IChsK3IpLzI7CiAgICAgICAgCW5vZGUqIG5ub2RlID0gbmV3IG5vZGUoKSA7CiAgICAgICAgCWlmKGwgPT0gcikKICAgICAgICAJewogICAgICAgIAkJbm5vZGUtPmRhdGEgPSBhW2xdOwogICAgICAgIAkJbm5vZGUtPmxlZnQgPSBsO25ub2RlLT5yaWdodCA9IHI7CiAgICAgICAgCQlubm9kZS0+bGxpbmsgPSBOVUxMO25ub2RlLT5ybGluayA9IE5VTEw7CiAgICAgICAgCQlyZXR1cm4gbm5vZGU7CiAgICAgICAgCX0KICAgICAgICAJbm5vZGUtPmxsaW5rID0gY3JlYXRlKGwgLCBtaWQpOwogICAgICAgIAlubm9kZS0+cmxpbmsgPSBjcmVhdGUobWlkKzEscik7CiAgICAgICAgCW5ub2RlLT5sZWZ0ID0gbDsKICAgICAgICAJbm5vZGUtPnJpZ2h0ID0gcjsKICAgICAgICAJbm5vZGUtPmRhdGEgPSBnY2Qobm5vZGUtPmxsaW5rLT5kYXRhICwgbm5vZGUtPnJsaW5rLT5kYXRhKTsKICAgICAgICAJcmV0dXJuIG5ub2RlOwogICAgICAgIH0KICAgICAgICBpbnQgcXVlcnkobm9kZSogbm5vZGUsIGludCBsLGludCByKQogICAgICAgIHsKICAgICAgICAJaWYobm5vZGUtPmxlZnQgPiByIHx8IG5ub2RlLT5yaWdodCA8IGwpcmV0dXJuIDA7CiAgICAgICAgCWlmKG5ub2RlLT5sZWZ0ID49IGwgJiYgbm5vZGUtPnJpZ2h0IDw9cilyZXR1cm4gbm5vZGUtPmRhdGE7CiAgICAgICAgCWludCBhID0gcXVlcnkobm5vZGUtPmxsaW5rLGwscik7CiAgICAgICAgCWludCBiID0gcXVlcnkobm5vZGUtPnJsaW5rLGwscik7CiAgICAgICAgCXJldHVybiBnY2QoYSxiKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgcSA9IEIuc2l6ZSgpOwogICAgICAgIHZlY3RvcjxpbnQ+IG91dDsKICAgICAgICAKICAgICAgICBmb3IoaW50IGk9MTtpPD1uO2krKykKICAgICAgICAgICAgYVtpXSA9IEFbaS0xXTsKICAgICAgICAKICAgICAgICByb290ID0gY3JlYXRlKDEsbik7CiAgICAgICAgCiAgICAgICAgZm9yIChpbnQgaT0wOyBpPHE7IGkrKyl7CiAgICAgICAgICAgIGludCB2YWwgPSBxdWVyeShyb290LGwscik7CiAgICAgICAgICAgIGNvdXQgPDwgZmliKHZhbCkgPDxlbmRsOwogICAgICAgICAgICAvL291dC5wdXNoX2JhY2soZmliKHZhbCkpOwogICAgICAgIH0KCn0=
compilation info
prog.cpp: In function ‘int main()’:
prog.cpp:5:2: error: ‘vector’ was not declared in this scope
vector< int > a;
^~~~~~
prog.cpp:5:10: error: expected primary-expression before ‘int’
vector< int > a;
^~~
prog.cpp:6:2: error: ‘a’ was not declared in this scope
a.push_back(2);
^
prog.cpp:9:9: error: ‘vector’ is not a member of ‘std’
vector<std::vector< int >> b(1, vector< int >(2, 0));
^~~
prog.cpp:9:22: error: expected primary-expression before ‘int’
vector<std::vector< int >> b(1, vector< int >(2, 0));
^~~
prog.cpp:12:10: error: ‘b’ was not declared in this scope
solve(a,b);
^
prog.cpp:12:11: error: ‘solve’ was not declared in this scope
solve(a,b);
^
prog.cpp: At global scope:
prog.cpp:17:1: error: ‘vector’ does not name a type
vector< int > solve(vector< int > &A, vector<vector< int > > &B) {
^~~~~~
stdout