제출 #1315255

#제출 시각아이디문제언어결과실행 시간메모리
1315255benightGlobal Warming (NOI13_gw)C++17
0 / 40
176 ms35200 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...