Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #define N 100000
- #define M 1000001
- #define oo 2000000000
- using namespace std;
- int aint[4*N], n, Q, a[N],s;
- void Update(int nod, int st, int dr, int poz, int val)
- {
- if(st==dr){aint[nod]=val; return;}
- int mij=(st+dr)/2;
- if(poz<=mij)Update(2*nod, st, mij, poz, val);
- else Update(2*nod+1, mij+1, dr, poz, val);
- aint[nod]=aint[2*nod]+aint[2*nod+1];
- }
- void Query(int nod, int st, int dr, int x, int y)
- {
- if(x<=st && y>=dr){s+=aint[nod];return;}
- int mij=(st+dr)/2;
- if(x<=mij)Query(2*nod, st, mij, x,y);
- if(y>mij)Query(2*nod+1, mij+1, dr, x,y);
- }
- char S[M];
- int u=M-1;
- void Next()
- {
- if(++u==M)
- fread(S,1,M,stdin), u=0;
- }
- void Cit(int &x)
- {
- for(; S[u]<'0' || S[u]>'9'; Next());
- for(x=0; S[u]>='0' && S[u]<='9'; Next())
- x=x*10+S[u]-'0';
- }
- int main()
- {
- freopen("bogdan.in","r", stdin);
- freopen("bogdan.out","w", stdout);
- Cit(n);
- for(int i=1;i<=n;i++)
- {
- Cit(a[i]);
- if(a[i]<a[i-1])Update(1,1,n,i,1);
- else Update(1,1,n,i,0);
- }
- Cit(Q);
- int tip, x,y;
- while(Q--)
- {
- Cit(tip); Cit(x); Cit(y);
- if(tip==1)
- {
- a[x]=y;
- if(a[x]<a[x-1])Update(1,1,n,x,1);
- else Update(1,1,n,x,0);
- if(a[x+1]<a[x])Update(1,1,n,x+1,1);
- else Update(1,1,n,x+1,0);
- }
- else
- {
- s=0;
- Query(1,1,n,x+1,y);
- if(s==0)printf("DA\n");
- else printf("NU\n");
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement