給定三個整數陣列
a = [a1, a2, … an],
b = [b1, b2, … bn],
c = [c1, c2, … cn],
請你統計有多少個三元組(i, j, k) 滿足:
1 <= i, j, k <= n
ai < bj < ck
【輸入格式】
第一行包含乙個整數n。
第二行包含n個整數a1, a2, … an。
第三行包含n個整數b1, b2, … bn。
第四行包含n個整數c1, c2, … cn。
對於30%的資料,1 <= n <= 100
對於60%的資料,1 <= n <= 1000
對於100%的資料,1 <= n <= 100000 0 <= ai, bi, ci <= 100000
【輸出格式】
乙個整數表示答案
【樣例輸入】
31 1 1
2 2 2
3 3 3
【樣例輸出】
27資源約定:
峰值記憶體消耗(含虛擬機器) < 256m
cpu消耗 < 1000ms
請嚴格按要求輸出,不要畫蛇添足地列印類似:「請您輸入…」 的多餘內容。
注意:main函式需要返回0;
只使用ansi c/ansi c++ 標準;
不要呼叫依賴於編譯環境或作業系統的特殊函式。
所有依賴的函式必須明確地在原始檔中 #include
不能通過工程設定而省略常用標頭檔案。
提交程式時,注意選擇所期望的語言型別和編譯器型別。
將三個陣列都進行排序,然後列舉b中的數值,
在a中找到所有比b[i]小的元素,在c中找到所有比b[i]大的元素
兩者相乘即可,將每一輪的乘積進行相加,就是結果值
在查詢元素的時候,使用了 algorithm 裡面的內建函式
lower_bound():查詢大於或者等於b[i]的第乙個位置
upper_bound():查詢大於b[i]的第乙個位置
一般的使用方法是:lower_bound(a, a+n, b[i]) - a;
則會返回等於或者大於b[i]的第乙個元素位置
#include #include #include #define max 100005
using namespace std;
int a[max], b[max], c[max];
int main()
for(int i = 0; i < n; i++)
for(int i = 0; i < n; i++)
sort(a, a+n);
sort(b, b+n);
sort(c, c+n);
int sum = 0;
for(int i = 0; i < n; i++)
//cout << upper_bound(c, c+n, b[2])-c << endl;
printf("%d\n", sum);
return 0;
}
2015藍橋杯b組c c 第六題,加法變乘法
加法變乘法 我們都知道 1 2 3 49 1225 現在要求你把其中兩個不相鄰的加號變成乘號,使得結果為2015 比如 1 2 3 10 11 12 27 28 29 49 2015 就是符合要求的答案。請你尋找另外乙個可能的答案,並把位置靠前的那個乘號左邊的數字提交 對於示例,就是提交10 思路 ...
2023年藍橋杯省賽A組第六題 航班時間
題目 小h前往美國參加了藍橋杯國際賽。小h的女朋友發現小h上午十點出發,上午十二點到達美國,於是感嘆到 現在飛機飛得真快,兩小時就能到美國了 小h對超音速飛行感到十分恐懼。仔細觀察後發現飛機的起降時間都是當地時間。由於北京和美國東部有12小時時差,故飛機總共需要14小時的飛行時間。不久後小h的女朋友...
2023年藍橋杯C C 組B組第二題
include includeint a 30 int fun1 int num for int j last printf n if getasynckeystate 48 sum if j 29 if go 0 if k 27 a k 0 else if go 1 else if go 2 把剩...