https://softeer.ai/practice/info.do?idx=1&eid=654&sw_prbl_sbms_sn=111741
#include<iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(int argc, char** argv)
{
int N;
cin >> N;
vector<int> in(N);
vector<int> pos(N);
for (int i = 0; i < N; ++i) {
cin >> in[i];
--in[i];
pos[in[i]] = i;
}
long long ans = 0;
for (int i = 0; i < N - 2; ++i) {
int cur = in[i];
vector<int> k_pos;
for (int k = 0; k < cur; ++k) {
if (pos[k] < i) continue;
k_pos.push_back(pos[k]);
}
k_pos.push_back(10000);
sort(k_pos.begin(), k_pos.end());
for (int j = cur + 1; j < N; ++j) {
if (pos[j] < i) continue;
int left = 0;
int right = k_pos.size() - 1;
while (left < right) {
int m = (left + right) / 2;
if (pos[j] < k_pos[m]) right = m;
else left = m + 1;
}
ans += k_pos.size() - 1 - right;
}
}
cout << ans << '\n';
return 0;
}
'알고리즘 > softeer' 카테고리의 다른 글
Softeer / [인증평가(2차) 기출] Garage game (0) | 2023.01.23 |
---|---|
Softeer / [인증평가(5차) 기출] 성적 평가 (0) | 2023.01.08 |
Softeer / [인증평가(4차) 기출] 슈퍼컴퓨터 클러스터 (0) | 2022.12.14 |
Softeer - 마이크로서버 (0) | 2022.03.27 |
Softeer - 플레이페어 암호 (0) | 2022.03.26 |