递增三元组

好无语。。。手写二分法写一小时没写对,不知道为啥;

调用c++的库函数来进行二分;思路很容易想到

递增三元组_第1张图片
递增三元组_第2张图片
递增三元组_第3张图片
#include 
#include
using namespace std;
int main()
{
    // 请在此输入您的代码
    int n;
    cin >> n;
    int i, j;
    vectora(n);
    vectorb(n);
    vectorc(n);
    for (i = 0; i < n; i++) {
        cin >> a[i];
    }
    for (i = 0; i < n; i++) {
        cin >> b[i];
    }
    for (i = 0; i < n; i++) {
        cin >> c[i];
    }
    sort(a.begin(), a.end());
    sort(b.begin(), b.end());
    sort(c.begin(), c.end());
    long long ans = 0;
    for (i = 0; i < n; i++) {
        int x = 0, y = 0;
        x = lower_bound(a.begin(), a.end(), b[i]) - a.begin() - 1;
        y = upper_bound(c.begin(), c.end(), b[i]) - c.begin();

        if (a[x]b[i]) {
            ans = ans + (long long)(x + 1) * (n - y);
        }
    }
    cout << ans;
}

你可能感兴趣的:(蓝桥杯,算法,c++)