UCPC
[20/07/05] H. 표절 (2428)
불타는강정
2020. 7. 9. 09:51
처음에 정렬한 뒤 자신의 뒤에 있는 숫자만 0.9 이상인지 비교하면 될 줄 알았다. 하지만 그러면 90 95 100과 같은 값은 체크하지 못한다. 그래서 90퍼 이상인 범위를 투포인터로 잡아서 개수를 세었다.
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <functional>
#include <string>
#include <queue>
#include <stack>
#include <set>
#include <map>
#define xx first
#define yy second
using namespace std;
using i64 = long long;
using ii = pair<int, int>;
using ii64 = pair<i64, i64>;
bool desc(int a, int b){ return a > b; };
int main() {
int n;
scanf("%d", &n);
vector<int> v(n);
for (int i = 0; i < n; i++)
scanf("%d", &v[i]);
sort(v.begin(), v.end(), desc);
int r = 1;
i64 ans = 0;
for (int l = 0; l < n; l++)
{
r = max(l+1, r);
while (r < n && v[l]*0.9 <= v[r])
r++;
ans += r - l - 1;
}
cout << ans;
return 0;
}