- μ΄ κΈμ C++λ‘ νμ΄λ₯Ό μμ±νμμ΅λλ€.
λ¬Έμ
μμ
νμ΄
- μ΄ λ¬Έμ λ₯Ό 3μ€ forλ¬Έμ μ¬μ©νλ©΄ ν©μ ꡬνκ³ ν©μ΄ μ‘΄μ¬νλμ§ νλ¨νμ¬ μκ°λ³΅μ‘λκ° O(N4)μ΄κΈ° λλ¬Έμ μκ°μ΄κ³Όκ° λ°μνκ² λ©λλ€.
- λ§μ§λ§ ν©μ΄ μ‘΄μ¬νλμ§λ₯Ό μ΄λΆνμμ μ¬μ©νλλΌλ μκ°λ³΅μ‘λκ° O(N3logN)μ΄λΌμ μκ°μ΄κ³Όκ° λΆκ°νΌν©λλ€.
- λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄μλ μ΄λΆνμμ μ¬μ©νλ, μλ‘μ΄ κΈ°λ²μ νμ©ν΄μΌ ν©λλ€. μ¦ 2κ°μ μ«μμ ν©μ νλμ λ°°μ΄μ λ§λλλ€. μ΄ λμ μκ°λ³΅μ‘λλ O(N2)μ
λλ€. μ΄ν μ²μ λ°°μ΄μ λ κ°μ μ°¨μ΄κ° 2κ°μ μ«μμ ν© λ°°μ΄μ μ‘΄μ¬νλμ§ νμΈνλ©΄ λ©λλ€. O(N2logN)μΌλ‘ ν΄κ²°ν μ μμ΅λλ€.
- ex) a1+a2+a3 = a4 ->, a4 - a3 = a1+a2
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
int num;
cin>>num;;
int arr[1005];
vector<int> two;
for(int i=0;i<num;i++){
cin>>arr[i];
}
sort(arr, arr+num);
for(int i=0;i<num;i++){
for(int j=i;j<num;j++){
two.push_back(arr[i] + arr[j]);
}
}
sort(two.begin(), two.end());
int result = 0;
for(int i=0;i<num;i++){
for(int j=i+1;j<num;j++){
if(binary_search(two.begin(), two.end(), arr[j]-arr[i])){
result = max(result, arr[j]);
}
}
}
cout<<result;
}