Submission #722347

#TimeUsernameProblemLanguageResultExecution timeMemory
722347groshimedians (balkan11_medians)C++17
100 / 100
163 ms16052 KiB
#include<bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> // Common file #include <ext/pb_ds/tree_policy.hpp> using namespace std; using namespace __gnu_pbds; typedef tree<long long, null_type, less<long long>, rb_tree_tag,tree_order_statistics_node_update> new_data_set; int b[300000]; int wynik[300000]; set<int> mam; int main() { cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0); new_data_set secik; int n; cin>>n; for(int i=1;i<=2*n-1;i++) mam.insert(i); for(int i=1;i<=n;i++) cin>>b[i]; int jestem=1; for(int i=1;i<=n;i++) { int mniejszych=i-1; int wiekszych=i-1; mniejszych-=(secik.order_of_key(b[i])); wiekszych-=(secik.size()-secik.order_of_key(b[i]+1)); auto it=mam.begin(); int ile1=mniejszych,ile2=wiekszych; while(mniejszych>0) { wynik[jestem]=*it; secik.insert(*it); it++; mniejszych--; jestem++; } it=mam.end(); it--; while(wiekszych>0) { wynik[jestem]=*it; secik.insert(*it); it--; wiekszych--; jestem++; } while(ile1) { it=mam.begin(); mam.erase(*it); ile1--; } while(ile2) { it=mam.end(); it--; mam.erase(*it); ile2--; } if(mam.find(b[i])!=mam.end()) { mam.erase(b[i]); secik.insert(b[i]); wynik[jestem]=b[i]; jestem++; } } for(int i=1;i<=n*2-1;i++) cout<<wynik[i]<<" "; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...