제출 #632194

#제출 시각아이디문제언어결과실행 시간메모리
632194PoonYaPatRice Hub (IOI11_ricehub)C++14
100 / 100
44 ms6456 KiB
#include "ricehub.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; multiset<int> rsq,lsq; int median=INT_MAX,ans; ll rsum,lsum; void med() { if (lsq.size()<rsq.size()) { auto it=rsq.begin(); rsum-=*it; lsum+=*it; lsq.insert(*it); rsq.erase(it); } if (lsq.size()>rsq.size()+1) { auto it=lsq.end(); --it; rsum+=*it; lsum-=*it; rsq.insert(*it); lsq.erase(it); } auto it=lsq.end(); median=*(--it); } void add(int x) { if (x<=median) lsum+=x, lsq.insert(x); else rsum+=x, rsq.insert(x); med(); } void del(int x) { if (x<=median) { auto it=lsq.find(x); lsum-=x; lsq.erase(it); } else { auto it=rsq.find(x); rsum-=x; rsq.erase(it); } med(); } int besthub(int n, int l, int c[], long long b) { int i=0, j=0; ll x=0; while (i<n) { add(c[i++]); if (lsq.size()==rsq.size()) x=rsum-lsum; else x=rsum-lsum+median; while (x>b && j<n) { del(c[j++]); if (lsq.size()==rsq.size()) x=rsum-lsum; else x=rsum-lsum+median; } ans=max(ans,i-j); } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...