2369 | 2023. 01. 11 19:47:43 | sztomi | Háromszögek | cpp11 | Elfogadva 40/40 | 71ms | 5372 KiB |
#include <bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
int n, q;
cin >> n >> q;
vector<int> a(n);
for(int i = 0; i < n; i++){
cin >> a[i];
}
sort(a.begin(), a.end());
int ki = 0;
int kezd1, veg1, kezd2, veg2;
bool j1, j2;
int b, c;
for(int i = 0; i < q; i++){
ki = 0;
j1 = j2 = false;
cin >> b >> c;
if(b > c) swap(b, c);
// legnagyobb olyan a, ahol b+c > a
veg1 = n-1-int(upper_bound(a.rbegin(), a.rend(), b+c, greater<int>())-a.rbegin());
// legkisebb olyan a, ahol c <= a
kezd1 = lower_bound(a.begin(), a.end(), c)-a.begin();
//cout << kezd1 << " debug " << veg1 << "\n";
if(0 <= veg1 && veg1 < n && 0 <= kezd1 && kezd1 < n && kezd1 <= veg1){
j1 = true;
}
// legkisebb olyan a, ahol c-b < a
kezd2 = upper_bound(a.begin(), a.end(), c-b)-a.begin();
// legnagyobb olyan a, ahol c >= a
veg2 = n-1-int(lower_bound(a.rbegin(), a.rend(), c, greater<int>())-a.rbegin());
if(0 <= veg2 && veg2 < n && 0 <= kezd2 && kezd2 < n && kezd2 <= veg2){
j2 = true;
}
if(j1 && j2){
if(kezd1 <= kezd2 && kezd2 <= veg1){
if(veg2 <= veg1){
ki += veg1-kezd1+1;
}
else{
ki += veg2-kezd1+1;
}
}
else if(kezd2 <= kezd1 && kezd1 <= veg2){
if(veg1 <= veg2){
ki += veg2-kezd2+1;
}
else{
ki += veg1-kezd2+1;
}
}
else{
ki += veg1-kezd1+1;
ki += veg2-kezd2+1;
}
}
else if(j1){
ki += veg1-kezd1+1;
}
else if(j2){
ki += veg2-kezd2+1;
}
//cout << kezd2 << " debug2 " << veg2 << "\n";
cout << ki << "\n";
}
}
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
base | 40/40 | ||||||
1 | Elfogadva | 0/0 | 3ms | 1824 KiB | |||
2 | Elfogadva | 0/0 | 2ms | 2060 KiB | |||
3 | Elfogadva | 0/0 | 7ms | 2440 KiB | |||
4 | Elfogadva | 4/4 | 3ms | 2480 KiB | |||
5 | Elfogadva | 2/2 | 3ms | 2640 KiB | |||
6 | Elfogadva | 1/1 | 64ms | 3668 KiB | |||
7 | Elfogadva | 1/1 | 43ms | 3776 KiB | |||
8 | Elfogadva | 2/2 | 43ms | 3976 KiB | |||
9 | Elfogadva | 2/2 | 43ms | 3972 KiB | |||
10 | Elfogadva | 1/1 | 61ms | 4156 KiB | |||
11 | Elfogadva | 1/1 | 59ms | 4376 KiB | |||
12 | Elfogadva | 2/2 | 61ms | 4420 KiB | |||
13 | Elfogadva | 2/2 | 61ms | 4692 KiB | |||
14 | Elfogadva | 1/1 | 68ms | 4692 KiB | |||
15 | Elfogadva | 1/1 | 59ms | 4780 KiB | |||
16 | Elfogadva | 1/1 | 59ms | 4876 KiB | |||
17 | Elfogadva | 1/1 | 46ms | 4992 KiB | |||
18 | Elfogadva | 1/1 | 43ms | 5096 KiB | |||
19 | Elfogadva | 2/2 | 43ms | 5084 KiB | |||
20 | Elfogadva | 2/2 | 45ms | 5092 KiB | |||
21 | Elfogadva | 3/3 | 46ms | 5120 KiB | |||
22 | Elfogadva | 5/5 | 63ms | 5216 KiB | |||
23 | Elfogadva | 5/5 | 71ms | 5372 KiB |