Skip to content

Instantly share code, notes, and snippets.

@saisumit
Created March 13, 2017 10:00
Show Gist options
  • Select an option

  • Save saisumit/7c7165c7094b6c646eb8931f1e9f134e to your computer and use it in GitHub Desktop.

Select an option

Save saisumit/7c7165c7094b6c646eb8931f1e9f134e to your computer and use it in GitHub Desktop.
/* When Panda is Life !
_,add8ba,
,d888888888b,
d8888888888888b _,ad8ba,_
d888888888888888) ,d888888888b,
I8888888888888888 _________ ,8888888888888b
__________`Y88888888888888P"""""""""""baaa,__ ,888888888888888,
,adP"""""""""""9888888888P""^ ^""Y8888888888888888I
,a8"^ ,d888P"888P^ ^"Y8888888888P'
,a8^ ,d8888' ^Y8888888P'
a88' ,d8888P' I88P"^
,d88' d88888P' "b,
,d88' d888888' `b,
,d88' d888888I `b,
d88I ,8888888' ___ `b,
,888' d8888888 ,d88888b, ____ `b,
d888 ,8888888I d88888888b, ,d8888b, `b
,8888 I8888888I d8888888888I ,88888888b 8,
I8888 88888888b d88888888888' 8888888888b 8I
d8886 888888888 Y888888888P' Y8888888888, ,8b
88888b I88888888b `Y8888888^ `Y888888888I d88,
Y88888b `888888888b, `""""^ `Y8888888P' d888I
`888888b 88888888888b, `Y8888P^ d88888
Y888888b ,8888888888888ba,_ _______ `""^ ,d888888
I8888888b, ,888888888888888888ba,_ d88888888b ,ad8888888I
`888888888b, I8888888888888888888888b, ^"Y888P"^ ____.,ad88888888888I
88888888888b,`888888888888888888888888b, "" ad888888888888888888888'
8888888888888698888888888888888888888888b_,ad88ba,_,d88888888888888888888888
88888888888888888888888888888888888888888b,`"""^ d8888888888888888888888888I
8888888888888888888888888888888888888888888baaad888888888888888888888888888'
Y8888888888888888888888888888888888888888888888888888888888888888888888888P
I888888888888888888888888888888888888888888888P^ ^Y8888888888888888888888'
`Y88888888888888888P88888888888888888888888888' ^88888888888888888888I
`Y8888888888888888 `8888888888888888888888888 8888888888888888888P'
`Y888888888888888 `888888888888888888888888, ,888888888888888888P'
`Y88888888888888b `88888888888888888888888I I888888888888888888'
"Y8888888888888b `8888888888888888888888I I88888888888888888'
"Y88888888888P `888888888888888888888b d8888888888888888'
^""""""""^ `Y88888888888888888888, 888888888888888P'
"8888888888888888888b, Y888888888888P^
`Y888888888888888888b `Y8888888P"^
"Y8888888888888888P `""""^
`"YY88888888888P'
^""""""""'
*/
using namespace std ;
#include <bits/stdc++.h>
#define REP(i, a, b) for (int i = a; i <= b; i++)
#define FOR(i, n) for (int i = 0; i < n; i++)
#define foreach(it, ar) for ( typeof(ar.begin()) it = ar.begin(); it != ar.end(); it++ )
#define PI 3.1415926535897932385
#define uint64 unsigned long long
#define Int long long
#define int64 long long
#define all(ar) ar.begin(), ar.end()
#define pb push_back
#define ff first
#define ss second
#define bit(n) (1<<(n))
#define Last(i) ( (i) & (-i) )
#define sq(x) ((x) * (x))
#define mp make_pair
Int N ;
const int MAXN = 1e5 +50 ;
Int tree[ MAXN ] ; // size of BIT O(n)
Int read( int idx )
{
Int sum = 0 ;
while( idx )
{
sum = sum + tree[idx] ;
idx -= (idx & -idx) ;
}
return sum ;
}
void update( int idx , Int val )
{
while( idx <= N )
{
tree[idx] += val ;
idx += ( idx & -idx ) ;
}
return ;
}
Int query( int L , int R )
{
return read( R ) - read(L-1) ;
}
Int func( Int num )
{
Int ans = (num)*(num-1) ;
return ans/2 ;
}
int main ( )
{
scanf("%lld",&N) ;
vector<Int>A( N + 1 ) ;
FOR( i , N )scanf("%lld",&A[i+1]) ;
for( int i = 1 ; i <= N ; i ++ )
if( A[i]&1 )update( i , 1 ) ;
int q ;
scanf("%d",&q) ;
while( q-- )
{
char type ;
cin >> type ;
if( type == 'V')
{
int L , R ;
scanf("%d%d",&L,&R) ;
L++; R ++ ;
Int no_odd = query( L , R ) ;
Int no_even = R - L + 1 - no_odd ;
//cout<<L<<" "<<R ;
//cin >>type ;
Int ans = func( no_odd ) + func( no_even ) ;
cout<<ans<<'\n' ;
}
else
{
int idx , val ;
scanf("%d%d",&idx,&val) ;
idx ++ ;
if( ( val&1 ) and !( A[idx]&1 ) )
update(idx,1);
if( !( val&1 ) and (A[idx]&1) )
update( idx , -1 ) ;
A[idx] = val ;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment