Problem - 1213B - Codeforces
codeforces.com
시간초과 문제
뒤에서 부터 제일 작은 min값을 설정하여 앞으로 검색하면서 비교
- 제목
Bad Prices
- 조건
time limit per test : 1 second
memory limit per test : 256 megabytes
input : standard input
output : standard output
- 문제
Polycarp analyzes the prices of the new berPhone. At his disposal are the prices for N last days: a1,a2,…,an, where ai is the price of berPhone on the day i.
Polycarp considers the price on the day ii to be bad if later (that is, a day with a greater number) berPhone was sold at a lower price. For example, if n=6 and a=[3,9,4,6,7,5], then the number of days with a bad price is 3 — these are days 2 (a2=9), 4 (a4=6) and 5 (a5=7).
Print the number of days with a bad price.
You have to answer tt independent data sets.
- 입력
The first line contains an integer t (1≤t≤10000) — the number of sets of input data in the test. Input data sets must be processed independently, one after another.
Each input data set consists of two lines. The first line contains an integer N (1≤N≤150000) — the number of days. The second line contains N integers a1,a2,…,an (1≤ai≤10^6), where aiai is the price on the i-th day.
It is guaranteed that the sum of N over all data sets in the test does not exceed 150000.
- 출력
Print t integers, the j-th of which should be equal to the number of days with a bad price in the j-th input data set.
예제 입력 1 | 5 6 3 9 4 6 7 5 1 1000000 2 2 1 10 31 41 59 26 53 58 97 93 23 84 7 3 2 1 2 3 4 5 |
예제 출력 1 | 3 0 1 8 2 |
#include <iostream>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int test_case, size, * arr, sum, min;
cin >> test_case;
for (int n = 0; n < test_case; n++) {
cin >> size;
arr = new int[size];
sum = 0;
for (int m = 0; m < size; m++) {
cin >> arr[m];
}
if (size == 1)
cout << 0 << endl;
else {
min = arr[size - 1];
for (int m = size - 2; m >= 0; m--) {
if (arr[m] > min)
sum++;
else if (arr[m] < min)
min = arr[m];
}
cout << sum << '\n';
}
}
return 0;
}