ngày 14 =Đ ( nay bận việc nên đăng khá muốn) ( vào link để xem đề chi tiết =D)

1 câu trả lời

#include <iostream>
#include <vector>
using namespace std;

int readInt() {
    int num = 0;
    register char c = getchar();
    while (c != '-' && ('0' > c || '9' < c)) c = getchar();
    bool neg = false;
    if (c == '-') neg = true, c = getchar();
    for(num = 0; '0' <= c && c <= '9'; c = getchar()) num = (num << 1) + (num << 3) + (c - '0');
    if (neg) num = -num;
    return num;
}

const int Lim = 1e4 + 1;
int a[Lim];
vector<vector<int> > pfs;
int n, q, l, r, res;

/// pfs[Lim][Lim] không được nên sang vector :((

int main() {
    n = readInt(); 
    q = readInt();
    pfs.assign(n + 1, vector<int>(n + 1, 0));
    
    for (int i = 1; i <= n; ++i) {
        a[i] = readInt();
        for (int j = 1; j <= i; ++j) {
            pfs[i][j] = pfs[i][j - 1] + (a[j] > a[i]);
        }
    }
    
    while (q--) {
        l = readInt();
        r = readInt();
        res = 0;
        for (int i = l; i <= r; ++i) {
            res += pfs[i][i] - pfs[i][l - 1];
        }
        cout << res << '\n';
    }
}

Câu hỏi trong lớp Xem thêm