Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- typedef long long int lld;
- lld E[10010];
- lld ST[65536];
- lld init( int root, int beg, int end, bool flag ){
- if( beg == end ) return ST[root] = E[beg];
- int mid = ( beg + end ) / 2;
- int l = 2 * root + 1;
- int r = 2 * root + 2;
- lld sum = 0;
- if( flag )
- sum = init(l,beg,mid,false) - init(r,mid+1,end,false);
- else
- sum = ST[root] = init(l,beg,mid,true) + init(r,mid+1,end,true);
- return ST[root] = sum;
- }
- void update( int root, int beg, int end, int p, lld diff, bool flag ){
- if( beg >= end || p < beg || p > end ) return;
- int length = end - beg + 1;
- int mid = ( beg + end ) / 2;
- int l = 2 * root + 1;
- int r = 2 * root + 2;
- if( flag ){
- if( length % 2 == 0 || root < end ) ST[root] += diff;
- update(l,beg,mid,p,diff,false);
- update(r,mid+1,end,p,diff,false);
- }
- else{
- if( length % 2 == 0 || root < end ) ST[root] -= diff;
- update(l,beg,mid,p,diff,true);
- update(r,mid+1,end,p,diff,true);
- }
- }
- void ans( int t ){
- if( ST[0] % 2 ){
- printf("%lld %s\n", ST[0], ( t % 2 ) ? "Rusa" : "Sanches");
- }
- else{
- printf("%lld %s\n", ST[0], ( t % 2 ) ? "Sanches" : "Rusa");
- }
- }
- int main(){
- int T, n, q;
- scanf("%d", &T );
- for( int t = 1; t <= T; t++ ){
- scanf("%d %d", &n, &q );
- for( int i = 0; i < n; i++ ) scanf("%lld", &E[i] );
- init(0,0,n-1,n%2);
- ans(t);
- lld v,p;
- while( q-- ){
- scanf(" %lld %lld", &p, &v );
- update(0,0,n-1,p-1,E[p-1]-v,n%2);
- ans(t);
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement