1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
//
//SKKU IDIOT LHS
//
#include <bits/stdc++.h>
#define ___ ios_base::sync_with_stdio(0); cin.tie(0);
#define ll long long
 
using namespace std;
void work();
int main()
{    ___
    work();
}
vector<int> temp = {10,2,1,5,8,4,7,3};
int mv;
 
pair<int,int> solve(int b,int f) // left is min, right = max;
{
    if(f - b == 1){
        mv = max(mv,temp[f] - temp[b]);
        if(temp[b]<temp[f])
            return make_pair(b,f);
        else
            return make_pair(f,b);
    }
    int mid = (f+b)/2;
    
    auto left = solve(b,mid);
    auto right = solve(mid+1,f);
    mv = max(mv,temp[right.second] - temp[left.first]);
    auto res = minmax_element(temp.begin() + b, temp.begin() + f + 1);
    return make_pair(res.first - temp.begin(),res.second - temp.begin());
}
void work()
{
    int n;
    //cin>>n;
    //temp = vector<int>(n);
    //for(auto &i : temp)
    //    cin>>i;
 
    mv = -1;
    int b = 0;
    int f = temp.size()-1;
    solve(b,f);
    cout<<mv<<endl;
}
cs

ㅈㅅㅈㅅ..몇분 고민해서 알려줬더니 냅다 안된다고 비웃으니깐 짜증나서 그랬어여...