Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define forn(l, r) for(int i = l; i < (r); ++i)
- #define forj(l, r) for(int j = l; j < (r); ++j)
- #define TAM 1000100
- #define SYNC ios::sync_with_stdio(0);
- #define $ << ' ' <<
- #define F first
- #define S second
- #define endl '\n'
- using namespace std;
- using ll = long long int;
- using ii = pair<int, int>;
- using vii = vector<ii>;
- using vi = vector<int>;
- using graph = vector<vi>;
- const int INF = 0x3f3f3f3f;
- const int MAXN = 112345;
- const ll mod = 1000000007;
- ll seq[MAXN], segt[4*MAXN+1], n;
- void build (int node, int l, int r) {
- if (l == r) {
- segt[node] = seq[l];
- }else {
- build(2*node+1, l, (l+r)/2);
- build(2*node+2, (l+r)/2+1, r);
- segt[node] = segt[node*2+1] * segt[node*2+2];
- }
- }
- void update (int node, int l, int r, int pos, int val) {
- if (l == r) {
- seq[pos] = segt[node] = val;
- } else {
- int mid = (l+r)/2;
- if (pos <= mid) update(2*node+1, l, mid, pos, val);
- else update(2*node+2, mid+1, r, pos, val);
- segt[node] = segt[node*2+1] * segt[node*2+2];
- }
- }
- int query (int node, int l, int r, int low, int up) {
- if (low > r || up < l) {
- return 1;
- }
- if (low <= l && up >= r) {
- return segt[node];
- }
- int mid = (l+r)/2;
- return query(node*2+1, l, mid, low, up)*query(node*2+2, mid+1, r, low, up);
- }
- int main()
- {
- SYNC
- int k;
- while(cin >> n >> k){
- for (int i = 0; i < n; ++i) {
- cin >> seq[i];
- if (seq[i] > 0) {
- seq[i] = 1;
- } else if (seq[i] < 0) {
- seq[i] = -1;
- }
- }
- build(0, 0, n-1);
- vector<char> ans;
- char op;
- int a, b;
- while (k--) {
- cin >> op >> a >> b;
- if (op == 'C') {
- if (b > 0) {
- b = 1;
- } else if (b < 0) {
- b = -1;
- }
- update(0, 0, n-1, a-1, b);
- } else {
- a = query(0, 0, n-1, a-1, b-1);
- if (a > 0) {
- ans.push_back('+');
- } else if (a == 0) {
- ans.push_back('0');
- } else {
- ans.push_back('-');
- }
- }
- }
- for (int i = 0; i < (int) ans.size(); ++i) {
- cout << ans[i];
- }
- cout << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment