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';
}
}