Submission #477878

#TimeUsernameProblemLanguageResultExecution timeMemory
477878sumit_kk10Global Warming (NOI13_gw)C++17
19 / 40
896 ms65540 KiB
#include <bits/stdc++.h> #define fast ios_base::sync_with_stdio(0);cin.tie(NULL);cout.tie(NULL) #define ll long long int #define ld long double using namespace std; const int N = 1000003; const int MOD = 1e9 + 7; void solve(){ int n; cin >> n; ll mn = 1e14; vector<ll> a(n); for(int i = 0; i < n; ++i){ cin >> a[i]; mn = min(mn, a[i]); } unordered_map<long long, vector<int> > pos; for(int i = 0; i < n; ++i) pos[a[i]].push_back(i); int x = 0; for(int j = 0; j < n; ++j){ int cur = j; while(a[cur] > mn and cur < n) ++cur; if(cur != j){ j = cur - 1; ++x; } } vector<bool> mp(n + 1, 0); for(auto k : pos[mn]) mp[k] = true; int ans = x; sort(a.begin(), a.end()); for(int i = 1; i < n; ++i){ if(a[i] == a[i - 1]) continue; for(auto k : pos[a[i]]){ if(k >= 1 and mp[k - 1] and mp[k + 1]){ --x; mp[k] = true; continue; } if(k >= 1 and mp[k - 1]){ if(k == n - 1) --x; mp[k] = true; continue; } if(mp[k + 1]){ if(k == 0) --x; mp[k] = true; continue; } if(k != 0 and k != n - 1) x++; mp[k] = true; } ans = max(ans, x); } cout << ans << "\n"; } int main(){ fast; int t = 1; // cin >> t; while(t--) solve(); return 0; }
#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...