Submission details
Task:Sort
Sender:RJuknevicius
Submission time:2026-04-17 12:59:56 +0300
Language:C++ (C++20)
Status:COMPILE ERROR

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:85:2: error: expected '}' at end of input
   85 | }
      |  ^
input/code.cpp:30:1: note: to match this '{'
   30 | {
      | ^

Code

#include <bits/stdc++.h>
using namespace std;
int lmin[200000], rmin[200000], lmax[200000], rmax[200000], x[200000], xs[200000], tw[800001], wrong[200000];

void wrongbuild(int v, int tl, int tr)
{
    if(tl>tr) return;
    if(tl==tr) {tw[v]=wrong[tl];return;}

    int tm=(tl+tr)/2;
    wrongbuild(2*v, tl, tm);
    wrongbuild(2*v+1, tm+1, tr);
    tw[v]=tw[2*v]+tw[2*v+1];

}

int wrongquery(int v, int tl, int tr, int l, int r)
{
    if(tl>tr || tl>r || tr<l) return 0;
    if(tl>=l && tr<=r) return tw[v];

    int tm=(tl+tr)/2;

    return wrongquery(2*v, tl, tm, l, r) + wrongquery(2*v+1, tm+1, tr, l,r);
}



int main()
{
    int n, q;
    cin>>n>>q;

    for(int i = 0; i < n; i++)
    {
        cin>>x[i];
        xs[i]=x[i];

        if(i==0) {lmin[i]=x[i];lmax[i]=x[i];}
        else {
            if(x[i-1]>x[i]) wrong[i]=1;
            lmin[i]=min(lmin[i-1], x[i]);
            lmax[i]=max(lmax[i-1], x[i]);
        }
    }
    sort(xs, xs+n);
    rmax[n-1]=x[n-1];
    rmin[n-1]=x[n-1];
    for(int i = n-2; i >=0; i--)
    {

        rmin[i]=min(rmin[i+1], x[i]);
        rmax[i]=max(rmax[i+1], x[i]);

    }

    wrongbuild(1, 0, n-1);

    for(int i = 0; i < q;i++)
    {
        int a,b;cin>>a>>b;
        if(a+b<n)
        {
            if(wrongquery(1, 0, n-1, a, n-b-1)!=0) cout  <<-1 << endl;
            else
            {
                if(x[a]<lmax[a-1] || x[n-b-1] > rmin[n-b]) cout  <<-1 << endl;
                else  cout << (!(wrongquery(1, 0, n-1, 0, a-1)==0)) + (!(wrongquery(1, 0, n-1, n-b, n-1)==0)) << endl;
            }
        }
        if(a+b==n)
        {
            if(lmax[a-1]<=rmin[a])
            {
                cout << (!(wrongquery(1, 0, n-1, 0, a-1)==0)) + (!(wrongquery(1, 0, n-1, a, n-1)==0)) << endl;
            }
            else cout << -1 << endl;
        }
        if(a+b>n)
        {
             if(a==n || b==n) {cout << min(1, wrongquery(1, 0 , n-1, 0, n-1));
             cout << (!wrongquery(1, 0, n-1, 0, a-1)==0) + (!wrongquery(1, 0, n-1, n-b, n-1)==0) << endl;
        }
    }
}