Submission #28833

#TimeUsernameProblemLanguageResultExecution timeMemory
28833dereotuRice Hub (IOI11_ricehub)C++14
42 / 100
309 ms7104 KiB
#include "ricehub.h" #include <bits/stdc++.h> #define pii pair<int,int> #define mp make_pair #define pb push_back #define st first #define nd second #define forr(i,A,B) for(int i=A;i<B;++i) #define space ' ' #define endl '\n' #define LL long long using namespace std; int a[100005],ans; vector<pair<int,int> > arr(100005); //sonraki arrayi tutmayı denemelisin line 39 int besthub(int R, int L, int X[], long long B){ if(L<=10000){ forr(i,0,L){ int b=0,h=0; memset(a,0,sizeof a); forr(j,0,R){ a[j]=abs(X[j]-i); } sort(a,a+R); forr(j,0,R){ if(b+a[j]<=B){ b+=a[j]; h++; } else break; } ans=max(ans,h); } return ans; } else{ int b=0,left=0,right=0,ontop=0,h=0; forr(i,0,R){ arr.clear(); forr(j,0,R){ arr[j].st=abs(X[j]-X[i]); if(X[j]-X[i]>0) arr[j].nd=1; else if(X[j]-X[i]<0) arr[j].nd=-1; else arr[j].nd=0; } sort(arr.begin(),arr.end()); forr(j,0,R){ if(b+arr[j].nd<=B){ b+=arr[j].st; if(arr[j].nd==1) right++; else if(arr[j].nd==-1) left++; else ontop++; h++; } else break; } ans=max(ans,h); if(right-left>=2){ i+=(right-left)/2; i--; } } 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...