Submission #1315256

#TimeUsernameProblemLanguageResultExecution timeMemory
1315256benight지구 온난화 (NOI13_gw)C++17
0 / 40
158 ms35276 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define vi vector<ll>
#define f(i,a,b) for(ll i=a;i<b;i++)
#define fr(i,a,b) for(ll i=a;i>=b;i--)
#define fa(e,l) for(auto e:l)
#define all(arr) arr.begin(),arr.end()
#define pii pair<ll,ll>
#define tii tuple<ll,ll,ll>
#define coutpii(x) fa(e,x){cout<<e.first<<","<<e.second<<" ";}cout<<"\n"
#define coutll(x) fa(e,x){cout<<r<<" ";}cout<<"\n"



int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    ll T,n,k,m,a,b,c=0,d,x,y,z,q,l,r,w;
    // cin>>T;
    vi arr;
    cin>>n;
    f(i,0,n){
        cin>>x;
        arr.pb(x);
    }
    ll big=arr[0];
    ll prev=arr[0];
    ll prevbig=arr[0];
    vector<pii> sweep;
    vi tmp;
    ll zero=0;
    if(arr[0]==0){zero++;}
    f(i,1,n){
        if(arr[i]==0){zero++;}
        if(arr[i]>prev && prev<big){
            tmp.pb(big);
            tmp.pb(prev);
            // sweep.pb({prev,min(big,prevbig)});
            big=arr[i];
        }//shit here
        else if(arr[i]>big){big=arr[i];}
        prev=arr[i];
    }
    tmp.pb(big);
    if(zero==n){cout<<"0";return 0;}
    if(tmp.size()<3){cout<<"1";return 0;}
    for(ll i=1;i<tmp.size()-1;i+=2){
        sweep.pb({tmp[i],min(tmp[i-1],tmp[i+1])});
    }
    vector<pii> fin;
    fa(e,sweep){fin.pb({e.first,0});fin.pb({e.second,1});}
    // coutpii(sweep);
    // coutpii(fin);
    sort(all(fin));
    ll ans=1,temp=1;
    prev=-1;
    fa(e,fin){
        // cout<<e.first<<" "<<e.second<<"\n";
        if(e.second==0){temp++;}
        if(e.second==1){temp--;}
        if(prev==e.first){continue;}
        prev=e.first;
        ans=max(ans,temp);
    }
    cout<<ans;
}

/*
Okay
So you need to store
min,min of 2 bigs
*/
#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...