Advertisement
Guest User

Untitled

a guest
Oct 21st, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.38 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. #define pb push_back
  5. #define mp make_pair
  6. #define f first
  7. #define s second
  8. #define int long long
  9. typedef long long ll;
  10. typedef pair<int,int>pii;
  11. #define MAXN 1123456
  12. #define INF INT_MAX/2
  13. #define MOD 1000000
  14.  
  15. int bit[MAXN];
  16. int bit0[MAXN];
  17. int v[MAXN];
  18.  
  19. void upd(int a){
  20.     for(int i=a;i<MAXN;i+=(i&-i)){
  21.         bit[i]++;
  22.     }
  23. }
  24.  
  25. int get(int a){
  26.     if(a==0)return 0;
  27.     int resp=0;
  28.     for(int i=a;i>0;i-=(i&-i)){
  29.         resp+=bit[i];
  30.     }
  31.     return resp;
  32. }
  33.  
  34. void upd0(int a,int x){
  35.     for(int i=a;i<MAXN;i+=(i&-i)){
  36.         bit0[i]+=x;
  37.     }
  38. }
  39.  
  40. int get0(int a){
  41.     int resp=0;
  42.     for(int i=a;i>0;i-=(i&-i)){
  43.         resp+=bit0[i];
  44.     }
  45.     return resp;
  46. }
  47.  
  48.  
  49. int32_t main(){
  50.     ios::sync_with_stdio(false);
  51.     cin.tie(0);
  52.  
  53.     int n,q;
  54.     while(cin>>n){
  55.         cin>>q;
  56.  
  57.  
  58.         for(int i=0;i<=n;i++){
  59.             bit[i]=0;
  60.             bit0[i]=0;
  61.         }
  62.  
  63.         for(int i=1;i<=n;i++){
  64.             int y;
  65.             cin>>y;
  66.             v[i]=y;
  67.             if(y==0)upd0(i,1);
  68.             if(y<0)upd(i);
  69.         }
  70.         for(int i=0;i<q;i++){
  71.             char c;
  72.             cin>>c;
  73.             if(c=='C'){
  74.                 int j,x;
  75.                 cin>>j>>x;
  76.                 if(v[j]<0)upd(j);
  77.                 if(v[j]==0)upd0(j,-1);
  78.                 v[j]=x;
  79.                 if(v[j]<0)upd(j);
  80.                 if(v[j]==0)upd0(j,1);
  81.  
  82.             }
  83.             else{
  84.                 int com,fim;
  85.                 cin>>com>>fim;
  86.                 if(get0(fim)!=get0(com-1))cout<<0;
  87.                 else{
  88.                     if((get(fim)-get(com-1))%2==0)cout<<"+";
  89.                     else cout<<"-";
  90.                 }
  91.             }
  92.         }
  93.         cout<<endl;
  94.     }
  95.  
  96.     return 0;
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement