This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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;
//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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |