MAGB - Đếm số nghịch thế
Xem dạng PDF
Gửi bài giải
Điểm:
1,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, PyPy, Python, Ruby, Rust, Scratch, Swift
Cho một dãy gồm ~n~ số nguyên ~a_1, a_2, …, a_n~, đếm số cặp số mà số đứng sau nhỏ hơn số đứng trước. Tức là đếm số cặp ~a_i, a_j~ mà ~i < j~ và ~a_i > a_j~.
Input
- Dòng đầu tiên chứa duy nhất một số nguyên dương ~n~ (số phần tử trong dãy);
- Dòng thứ hai chứa ~n~ số nguyên là các phần tử ~a_1, a_2, …, a_n~
Giới hạn:
- ~1≤n≤10^5,1≤a_i≤10^5~
Output
- In ra trên một dòng số nguyên duy nhất là số cặp nghịch thế của dãy.
Sample
Input #1
5
2 1 1 2 3
Output #1
2
Input #2
5
3 1 3 1 2
Output #2
5
Problem source: Chuyên Sơn La Online Judge
Bình luận
include <bits/stdc++.h>
using namespace std; using ll = long long;
// Fenwick tree / BIT hỗ trợ update và query prefix sum struct Fenwick { int n; vector<ll> f; Fenwick(int n): n(n), f(n+1, 0) {} // add value v at position i (1-based) void update(int i, ll v) { for (; i <= n; i += i & -i) { f[i] += v; } } // query sum from 1..i (inclusive) ll query(int i) { ll s = 0; for (; i > 0; i -= i & -i) { s += f[i]; } return s; } };
int main(){ ios::syncwithstdio(false); cin.tie(nullptr);
}