Submission #344191

#TimeUsernameProblemLanguageResultExecution timeMemory
344191aryanc403Safety (NOI18_safety)C++17
100 / 100
62 ms5520 KiB
/* in the name of Anton */ /* Compete against Yourself. Author - Aryan Choudhary (@aryanc403) */ #ifdef ARYANC403 #include "/home/aryan/codes/PastCodes/template/header.h" #else // #pragma GCC optimize ("Ofast") // #pragma GCC target ("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx") // #pragma GCC optimize ("-ffloat-store") #include<iostream> #include<bits/stdc++.h> #define dbg(args...) #endif using namespace std; #define fo(i,n) for(i=0;i<(n);++i) #define repA(i,j,n) for(i=(j);i<=(n);++i) #define repD(i,j,n) for(i=(j);i>=(n);--i) #define all(x) begin(x), end(x) #define sz(x) ((lli)(x).size()) #define pb push_back #define mp make_pair #define X first #define Y second #define endl "\n" typedef long long int lli; typedef long double mytype; typedef pair<lli,lli> ii; typedef vector<ii> vii; typedef vector<lli> vi; const auto start_time = std::chrono::high_resolution_clock::now(); void aryanc403() { #ifdef ARYANC403 auto end_time = std::chrono::high_resolution_clock::now(); std::chrono::duration<double> diff = end_time-start_time; cerr<<"Time Taken : "<<diff.count()<<"\n"; #endif } const lli INF = 0xFFFFFFFFFFFFFFFL; lli seed; mt19937 rng(seed=chrono::steady_clock::now().time_since_epoch().count()); inline lli rnd(lli l=0,lli r=INF) {return uniform_int_distribution<lli>(l,r)(rng);} class CMP {public: bool operator()(ii a , ii b) //For min priority_queue . { return ! ( a.X < b.X || ( a.X==b.X && a.Y <= b.Y )); }}; void add( map<lli,lli> &m, lli x,lli cnt=1) { auto jt=m.find(x); if(jt==m.end()) m.insert({x,cnt}); else jt->Y+=cnt; } void del( map<lli,lli> &m, lli x,lli cnt=1) { auto jt=m.find(x); assert(jt->Y>=cnt); if(jt->Y<=cnt) m.erase(jt); else jt->Y-=cnt; } bool cmp(const ii &a,const ii &b) { return a.X<b.X||(a.X==b.X&&a.Y<b.Y); } const lli mod = 1000000007L; const lli N = 405; lli T,n,i,j,k,in,cnt,l,r,u,v,x,y,c; lli m; string s; vii a; //priority_queue < ii , vector < ii > , CMP > pq;// min priority_queue . int main(void) { ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); // freopen("txt.in", "r", stdin); // freopen("txt.out", "w", stdout); // cout<<std::fixed<<std::setprecision(35); // cin>>T;while(T--) { lli h; cin>>n>>h; priority_queue<lli> dec; priority_queue<lli,vi,greater<lli>> inc; lli addL=0,addR=0; lli c=0; dec.push(-INF); inc.push(INF); while(n--) { cin>>l; addL-=h; addR+=h; if(inc.top()+addR<l) { inc.push(l-addR); dec.push(inc.top()+addR-addL); inc.pop(); c+=l-(dec.top()+addL); inc.push(l-addR); } else if(dec.top()+addL>l) { dec.push(l-addL); dec.push(l-addL); inc.push(dec.top()+addL-addR); dec.pop(); c+=(inc.top()+addR)-l; } else { inc.push(l-addR); dec.push(l-addL); } dbg(dec.top()+addL,inc.top()+addR); assert(dec.top()+addL<=inc.top()+addR); } cout<<c<<endl; } aryanc403(); 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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...