Submission #1294503

#TimeUsernameProblemLanguageResultExecution timeMemory
1294503muhammad-mutahir쌀 창고 (IOI11_ricehub)C++20
68 / 100
10 ms1980 KiB
#include "ricehub.h"

#include <bits/stdc++.h>
using namespace std;

#define print(l) for(auto i:l) cout<<i<<" ";cout<<endl;
#define input(t,l,n) vector<t>l(n);for(int i = 0;i<n;i++)cin>>l[i];
// #define int long long
#define pb push_back
#define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update> 
#define all(l) l.begin(),l.end()
#define pii pair<int,int>
#define fi first
#define se second

const int M = 1e9+7;
const int inf = 1e18;


int bp(int x, int y, int p){
    int res = 1;
    x = x % p;
    while (y > 0) {
 
        if (y & 1)
            res = (res * x) % p;
        y = y >> 1;
        x = (x * x) % p;
    }
    return res;
}
 
int MI(int n, int p){
    return bp(n, p - 2, p);
}
int mul(int x,int y, int p){
    return x * 1ull * y % p;
}
int di(int x,int y, int p){
    return mul(x, MI(y, p), p);
}


int n , m , k , q;

int besthub(int R, int L, int X[], long long B) {
	int l = -1;
	int r = R+1;
	vector<int>A;
	for(int i = 0;i<R;i++)A.pb(X[i]);
	
	vector<int>p = {0};
	
	for(int i = 0;i<R;i++){
		p.pb(p.back()+X[i]);
	}
	
	while(r-l > 1){
		int m = (l+r)/2;
		// cout<<l<<" "<<r<<" "<<m<<endl;

		int fl =0 ;
	
		for(int i = 0;i+m-1<R;i++){
	
			int ops = (A[(i +i+m-1)/2]);
			
			auto d = lower_bound(all(A),ops);
			if(*d >= ops){
				d--;
			}
			int dn = distance(A.begin(),d);
			int suml = -(p[dn+1]-p[i]) + (dn+1-i) * ops;
			int sumr = p[i+m]-p[dn+1] - (i+m -(dn+1)) * ops;
			
			if(suml+sumr<=B){
				l = m;
				fl = 1;
				break;
			}
			// cout<<ops<<" "<<suml<<" "<<sumr<<" "<<dn<<endl;
			
		}
		if(!fl){
			r = m;
		}
	
	}
	return l;
}

// signed main(){
    // ios::sync_with_stdio(0);//DO NOT USE IN INTERACTIVE
    // cin.tie(0), cout.tie(0);
    // cout << fixed<<setprecision(9);
    // int A[6] = {1,2,10,12,12,14};
    // cout<<besthub(6ll,20ll,A,6ll)<<endl;;
// }

Compilation message (stderr)

ricehub.cpp:17:17: warning: overflow in conversion from 'double' to 'int' changes value from '1.0e+18' to '2147483647' [-Woverflow]
   17 | const int inf = 1e18;
      |                 ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...