Submission details
Task:Sort
Sender:FZiuzin
Submission time:2026-04-17 14:42:33 +0300
Language:C++ (C++20)
Status:COMPILE ERROR

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:83:13: error: redeclaration of 'int64_t cnt'
   83 |         int cnt = 0;
      |             ^~~
input/code.cpp:77:13: note: 'int64_t cnt' previously declared here
   77 |         int cnt = 0;
      |             ^~~

Code

#include <bits/stdc++.h>

using namespace std;
#define int int64_t

const int INF = 1e14;
const int MAXN = 2e5 + 5;

#define pb push_back
#define all(a) a.begin(), a.end()

int n,q;
int solve(vector<int> a, int l, int r, bool turn)
{
    if (is_sorted(all(a)))
    {
        return 0;
    }
    int res = 0;
    for (int i = 0;i <= n;i++)
    {
        if ((i % 2) ^ turn)
        {
            sort(a.begin(), a.begin() + l + 1);
        }
        else
        {
            sort(a.begin() + r, a.end());
        }
        res++;
        if (is_sorted(all(a)))
        {
            return res;
        }
    }
    return INF;
}
signed main()
{
    cin >> n >> q;
    vector<int> a(n);
    for (int i = 0;i < n;i++)
    {
        cin >> a[i];
        a[i]--;
    }
    vector<bool> pref(n, 0);
    pref[0] = 0;
    for (int i = 1;i < n;i++)
    {
        if (a[i] < a[i - 1])
        {
            pref[i] = pref[i - 1] + 1;
        }
        else
        {
            pref[i] = pref[i - 1];
        }
    }
    vector<int> pref_mx(n, 0), suf_mx(n, 0);
    pref_mx[0] = a[0];
    for (int i = 1;i < n;i++)
    {
        pref_mx[i] = max(pref_mx[i - 1], a[i]);
    }
    suf_mx[n - 1] = a[n - 1];
    for (int i = n - 1;i >= 0;i--)
    {
        suf_mx[i] = max(suf_mx[i + 1], a[i]);
    }
    while (q--)
    {
        int l, r;
        cin >> l >> r;
        l--;
        r = n - r;
        int cnt = 0;
        if (l < r && pref[r - 1] - pref[l + 2] > 0)
        {
            cout << -1 << '\n';
            continue;
        }
        int cnt = 0;
        if (pref[l] > 0)
        {
            cnt++;
        }
        if (pref[n - 1] - pref[r] > 0)
        {
            cnt++;
        }
        if (l < r && (a[l + 1] < pref_mx[l] || a[r - 1] > suf_mx[r]))
        {
            cout << -1 << '\n';
            continue;
        }
        cout << cnt << '\n';
    }
    return 0;
}