제출 #1161723

#제출 시각아이디문제언어결과실행 시간메모리
1161723Tyx2019Real Mountains (CCO23_day1problem2)C++20
0 / 25
4 ms3140 KiB
#include <bits/stdc++.h>
#define int long long
#define debug(x) if(1) cout << #x << " = " << x << endl;
using namespace std;
const int maxN = 5005;
const int INF = 1e18;
int A[maxN];
main(){
    int N;
    cin >> N;
    for(int i=0;i<N;i++) cin >> A[i];
    int mx = 0;
    for(int i=0;i<N;i++) mx = max(mx, A[i]);
    int s = INT_MAX;
    int e = 0;
    for(int i=0;i<N;i++){
        if(A[i] == mx){
            s = min(s, i);
            e = max(e, i);
        }
    }
    int B[N];
    for(int i=s;i<=e;i++) B[i] = mx;
    int cur = 0;
    for(int i=0;i<s;i++){
        cur = max(cur, A[i]);
        B[i] = cur;
    }
    cur = 0;
    
    for(int i=N-1;i>e;i--){
        cur = max(cur, A[i]);
        B[i] = cur;
    }
    //for(int i=0;i<N;i++) cout << B[i] << " ";
    //cout << '\n';
    int mxgg = 105;
    vector<int> guys[mxgg];
    for(int i=0;i<N;i++){
        for(int j=A[i];j<B[i];j++) guys[j].push_back(i);
    }
    int ans = 0;
    //debug("hi");
    for(int i=1;i<mxgg;i++){
        sort(guys[i].begin(), guys[i].end());
        int a = INF;
        int b = INF;
        int c = guys[i].size();
        if(c == 0) continue;
        for(int j=0;j<guys[i][0];j++) if(A[j] > i) a = min(a, A[j]);
        for(int j=guys[i][c-1];j<N;j++) if(A[j] > i) b = min(b, A[j]);
        int d = INF;
        for(int j=guys[i][0];j<guys[i][c-1];j++) if(A[j] > i) d = min(d, A[j]);
        ans += c * i;
        if(c == 1){
            ans += a + b;
        }
        else if(c >= 2){
            ans += min(a+min(d, b)+i+1+b, b+min(d, a)+i+1+a);
            ans += 2 * (i + 1) * (c - 2);
        }
    }
    cout << ans;
}

컴파일 시 표준 에러 (stderr) 메시지

Main.cpp:8:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
    8 | main(){
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...