Submission details
Task:Sort
Sender:MRiekasius
Submission time:2026-04-17 13:24:42 +0300
Language:C++ (C++20)
Status:COMPILE ERROR

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:77:9: error: expected ',' or ';' before 'int'
   77 |         int RejimuDelL = ltor/keitimoGreitis + (int)(ltor % keitimoGreitis != 0);
      |         ^~~
input/code.cpp:81:9: error: expected ',' or ';' before 'int'
   81 |         int LejimuDelR = rtol/keitimoGreitis + (int)(rtol % keitimoGreitis != 0);
      |         ^~~
input/code.cpp:83:54: error: 'LejimuDelR' was not declared in this scope; did you mean 'RejimuDelR'?
   83 |         int Ejimai = max(LejimuDelL, max(LejimuDelM, LejimuDelR)) + max(RejimuDelL, max(RejimuDelM, RejimuDelR));
      |                                                      ^~~~~~~~~~
      |                                                      RejimuDelR
input/code.cpp:83:73: error: 'RejimuDelL' was not declared in this scope; did you mean 'RejimuDelR'?
   83 |         int Ejimai = max(LejimuDelL, max(LejimuDelM, LejimuDelR)) + max(RejimuDelL, max(RejimuDelM, RejimuDelR));
      |...

Code

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int n, q;
    cin >> n >> q;
    vector<int> skaiciai(n);
    for(int& i: skaiciai) cin >> i;
    vector<int> didziausiasSkaiciusIki(n, -1), maziausiasSkaiciusNuo(n, -1);
    vector<int> skaiciaiInPlaceIki(n, 0);
    didziausiasSkaiciusIki[0] = skaiciai[0];
    skaiciaiInPlaceIki[0] = (skaiciai[0] == 1);
    maziausiasSkaiciusNuo[n - 1] = skaiciai[n-1];
    for(int i = 1; i < n; i++){
        skaiciaiInPlaceIki[i] = skaiciaiInPlaceIki[i - 1] + (int)(skaiciai[i] == i + 1);
        didziausiasSkaiciusIki[i] = max(didziausiasSkaiciusIki[i - 1], skaiciai[i]);
    }
    for(int i = n - 2; i >= 0; i--){
        maziausiasSkaiciusNuo[i] = min(skaiciai[i], maziausiasSkaiciusNuo[i+1]);
    }
    /*for(int i : skaiciaiInPlaceIki) cout << i << " ";
    cout << "\n";
    for(int i : didziausiasSkaiciusIki) cout << i << " ";
    cout << "\n";
    for(int i : maziausiasSkaiciusNuo) cout << i << " ";
    cout << "\n";*/

    while(q--){
        int a, b;
        cin >> a >> b;
        if(a + b <= n){
            bool reikiaRikiuotiKaire = false;
            if(a > 0) reikiaRikiuotiKaire = (skaiciaiInPlaceIki[a - 1] != a);
            bool reikiaRikiuotiDesine = false;
            if(b > 0 && b < n)reikiaRikiuotiDesine = (skaiciaiInPlaceIki[n - 1] - skaiciaiInPlaceIki[n - b - 1] != b);
            if(b == n) reikiaRikiuotiDesine = (skaiciaiInPlaceIki[n - 1] != n);
            bool imanoma = ((skaiciaiInPlaceIki[n - b - 1] - skaiciaiInPlaceIki[a - 1]) == n - a - b) && (maziausiasSkaiciusNuo[n - b] == n - b + 1) && (didziausiasSkaiciusIki[a - 1] == a);
            //cout << reikiaRikiuotiKaire << reikiaRikiuotiDesine << imanoma << "\n";
            int ans = (int)reikiaRikiuotiDesine + (int)reikiaRikiuotiKaire;
            if(!imanoma) ans = -1;
            cout << ans << "\n";
            continue;
        }
        int keitimoGreitis = a + b - n;
        const int lStarts = 0;
        const int lEnds = n - b - 1;
        const int rStarts = a;
        const int rEnds = n - 1;
        const int midStarts = n - b;
        const int midEnds = a - 1;
        int ltor = 0, ltom = 0, mtol = 0, mtor = 0, rtol = 0, rtom = 0;
        bool lNeedsSort = (skaiciaiInPlaceIki[n - b - 1] != n - b);
        bool rNeedsSort = (skaiciaiInPlaceIki[n - 1] - skaiciaiInPlaceIki[a-1] != n - a);

        for(int i = lStarts; i <= lEnds; i++){
            int j = skaiciai[i] - 1;
            if(j >= midStarts && j <= midEnds) ltom++;
            if(j >= rStarts) ltor++;
        }
        for(int i = midStarts; i <= midEnds; i++){
            int j = skaiciai[i] - 1;
            if(j <= lEnds) mtol++;
            if(j >= rStarts) mtor++;
        }
        for(int i = rStarts; i <= rEnds; i++){
            int j = skaiciai[i] - 1;
            if(j >= midStarts && j <= midEnds) rtom++;
            if(j <= lEnds) rtol++;
        }
        cout << lStarts << " " << lEnds << " " << midStarts << " " << midEnds << " " << rStarts << " " << rEnds << "\n";
        cout << ltom << " " << ltor << " " << mtol << " " << mtor << " " << rtol << " " << rtom << "\n";
        cout << lNeedsSort << " " << rNeedsSort << "\n";
        int lIsstumtiTotal = ltor + ltom;
        int rIsstumtiTotal = rtol + rtom;
        int LejimuDelL = min((int) lNeedsSort, (lIsstumtiTotal)/keitimoGreitis + (int)(lIsstumtiTotal % keitimoGreitis != 0) )
        int RejimuDelL = ltor/keitimoGreitis + (int)(ltor % keitimoGreitis != 0);
        int LejimuDelM = mtol/keitimoGreitis + (int) (mtol % keitimoGreitis != 0);
        int RejimuDelM = mtor/keitimoGreitis + (int) (mtor % keitimoGreitis != 0);
        int RejimuDelR = min((int) rNeedsSort, (rIsstumtiTotal)/keitimoGreitis + (int)(rIsstumtiTotal % keitimoGreitis != 0) )
        int LejimuDelR = rtol/keitimoGreitis + (int)(rtol % keitimoGreitis != 0);

        int Ejimai = max(LejimuDelL, max(LejimuDelM, LejimuDelR)) + max(RejimuDelL, max(RejimuDelM, RejimuDelR));
        if(RejimuDelL != 0 && LejimuDelR != 0) Ejimai++;
        cout << Ejimai << "\n";
        //cout << keitimoGreitis << " " << reikiaKeistiKaireje << " " << reikiaKeistiDesineje << "\n";

    }
}