陣列a和陣列b,裡面都有n個整數。陣列c共有n^2個整數,分別是a[0] * b[0],a[0] * b[1] ......a[1] * b[0],a[1] * b[1]......a[n - 1] * b[n - 1](陣列a同陣列b的組合)。求陣列c中第k大的數。
例如:a:1 2 3,b:2 3 4。a與b組合成的c包括2 3 4 4 6 8 6 9 12共9個數。
input
第1行:2個數n和k,中間用空格分隔。n為陣列的長度,k對應第k大的數。(2 <= n <= 50000,1 <= k <= 10^9)output第2 - n + 1行:每行2個數,分別是a[i]和b[i]。(1 <= a[i],b[i] <= 10^9)
輸出第k大的數。input示例
3 2output示例 91 22 3
3 4
#include#include#includeusing namespace std;
typedef long long ll;
const int size = 5e4 + 5;
int n, k;
ll a[size], b[size];
ll check(ll x)
} return sum;
}
void fun()
else
} cout << l-1 << endl;
}
int main()
sort(a + 1, a + 1 + n);
sort(b + 1, b + 1 + n);
fun();
return 0;
}
第k大的數,前k大的數
1 排序後去出前k個,o n log n 如果k2 o nlog k 快排把數分為了兩個部分,所以考慮兩個情況,如果大的部分的個數 k,說明只要繼續在大的部分找就可以了,如果大的部分的個數3 o nlog maxv minv delta 平均為o nlogn 轉化為找第k個,假設最大的數為maxv,...
第K大的數
這道題是我去年聽說的,一次比賽悲劇的,前幾天ac的,大體思路是二分答案,記住在統計的時候,複雜度為n,而不是nlogn,這道題複雜度為 nlog max min include include includeusing namespace std define maxn 51000 int64 a ...
第k大的數
題目 陣列a和陣列b,裡面都有n個整數。陣列c共有n 2個整數,分別是a 0 b 0 a 0 b 1 a 1 b 0 a 1 b 1 a n 1 b n 1 陣列a同陣列b的組合 求陣列c中第k大的數。例如 a 1 2 3,b 2 3 4。a與b組合成的c包括2 3 4 4 6 8 6 9 12共9...