제출 #1191334

#제출 시각아이디문제언어결과실행 시간메모리
1191334oguzhan09Mountains (NOI20_mountains)C++20
70 / 100
2094 ms7372 KiB
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main(){
    int n;
    cin>>n;
    vector<ll>l(n);
    ll enb=0;
    ll say=0;
    for(int i=0;i<n;i++){
        cin>>l[i];
        enb=max(enb,l[i]);
    }
    if(is_sorted(l.begin(),l.end())){
        cout<<0<<endl;
        return 0;
    }
    if(enb==1){
        bool seen=false;
        ll pref[n];
        ll suf[n];
        pref[0]=0;
        if(l[0]==0) pref[0]++;
        for(int i=1;i<n;i++){
            pref[i]=pref[i-1];
            if(l[i]==0) pref[i]++;

        }
       /* for(int x:pref) cout<<x<<" ";
        cout<<endl;*/
        suf[n-1]=0;
        if(l[n-1]==0) suf[n-1]++;
        for(int i=n-2;i>=0;i--){
            suf[i]=suf[i+1];
            if(l[i]==0) suf[i]++;
        }
        /*for(int x:suf){
            cout<<x<<" ";
        }
        cout<<endl;*/

        for(int i=0;i<n;i++){
            if(l[i]==1){
                say+=suf[i]*pref[i];
            }
        }

        cout<<say<<endl;
        return 0;
    }

    for(int i=1;i<n-1;i++){
        ll sol_say=0,sag_say=0;
        for(int j=0;j<i;j++){
            if(l[j]<l[i]) sol_say++;
        }
        for(int j=i+1;j<n;j++){
            if(l[j]<l[i]) sag_say++;
        }

        say+=sol_say*sag_say;
    }

    cout<<say<<endl;

}
#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...