Submission #830206

# Submission time Handle Problem Language Result Execution time Memory
830206 2023-08-18T23:51:02 Z OAleksa Rice Hub (IOI11_ricehub) C++14
68 / 100
1000 ms 1068 KB
#include <bits/stdc++.h>
#include "ricehub.h"
#define f first
#define s second
using namespace std; 
 
int besthub(int R, int L, int X[], long long B)
{
  	int n = R;
  	int a[n];
  	for(int i = 0;i < n;i++)
  		a[i] = X[i];
	int ans = 1;
	int l = 0, r = 0;
	const int inf = 1e9 + 69;
	long long t = 0;
	while(r < n - 1 && t + a[r + 1] - a[0] <= B) {
		++r;
		t += (a[r] - a[0]);
		++ans;
	}
	for(int i = 1;i < n;i++) {
		if(i > r) {
			l = r = i;
			t = 0;
			while(r < n - 1 && t + a[r + 1] - a[i] <= B) {
				++r;
				t += (a[r] - a[i]);
			}
		}
		else {
			t -= (r - i + 1) * (a[i] - a[i - 1]);
			t += (i - l) * (a[i] - a[i - 1]);
			while(t > B) {
				if(a[i] - a[l] >= a[r] - a[i]) 
					t -= (a[i] - a[l++]);
				else 
					t -= (a[r--] - a[i]);
			}
			if(l > 0 && r > i && a[i] - a[l - 1] <= a[r] - a[l]) {
				while(l > 0 && r > i && a[i] - a[l - 1] <= a[r] - a[l]) {
					t += a[i] - a[l - 1];
					t -= (a[r] - a[i]);
					--r, --l;
				}
				while(l < i && r < n - 1 && a[r + 1] - a[i] <= a[i] - a[l]) {
					t += a[r + 1] - a[i];
					t -= (a[i] - a[l]);
					++r, ++l;
				}
			}
			else if(l < i && r < n - 1 && a[r + 1] - a[i] <= a[i] - a[l]) {
				while(l < i && r < n - 1 && a[r + 1] - a[i] <= a[i] - a[l]) {
					t += a[r + 1] - a[i];
					t -= (a[i] - a[l]);
					++r, ++l;
				}
				while(l > 0 && r > i && a[i] - a[l - 1] <= a[r] - a[l]) {
					t += a[i] - a[l - 1];
					t -= (a[r] - a[i]);
					--r, --l;
				}
			}
			while(t <= B) {
				int x = inf, y = inf;
				if(l > 0)
					x = a[i] - a[l - 1];
				if(r < n - 1)
					y = a[r + 1] - a[i];
				if(t + x > B)
					x = inf;
				if(t + y > B)
					y = inf;
				if(x == inf && y == inf)
					break;
				if(x <= y)
					t += x, --l;
				else
					t += y, ++r;
			}
		}
		ans = max(ans, r - l + 1);
	}
	return ans;
}
 
// signed main()
// {
	// ios_base::sync_with_stdio(false);
	// cin.tie(0);
	// cout.tie(0);
	// int tt = 1;
	// //cin >> tt;
	// while(tt--) {
		 // int n, k;
		 // long long x;
		 // cin >> n >> k >> x;
		 // int a[n];
		 // for(int i = 0;i < n;i++)
		 	// cin >> a[i];
		// cout << besthub(n, k, a, x);
	// }
   // return 0;
// }
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 1 ms 212 KB Output is correct
10 Correct 1 ms 212 KB Output is correct
11 Correct 0 ms 212 KB Output is correct
12 Correct 0 ms 212 KB Output is correct
13 Correct 1 ms 212 KB Output is correct
14 Correct 0 ms 212 KB Output is correct
15 Correct 0 ms 212 KB Output is correct
16 Correct 0 ms 212 KB Output is correct
17 Correct 1 ms 212 KB Output is correct
18 Correct 0 ms 212 KB Output is correct
19 Correct 0 ms 212 KB Output is correct
20 Correct 0 ms 212 KB Output is correct
21 Correct 0 ms 212 KB Output is correct
22 Correct 0 ms 212 KB Output is correct
23 Correct 0 ms 212 KB Output is correct
24 Correct 1 ms 212 KB Output is correct
25 Correct 1 ms 212 KB Output is correct
26 Correct 0 ms 212 KB Output is correct
27 Correct 0 ms 212 KB Output is correct
28 Correct 1 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 1 ms 212 KB Output is correct
9 Correct 0 ms 212 KB Output is correct
10 Correct 0 ms 212 KB Output is correct
11 Correct 0 ms 212 KB Output is correct
12 Correct 1 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 0 ms 212 KB Output is correct
15 Correct 0 ms 212 KB Output is correct
16 Correct 1 ms 212 KB Output is correct
17 Correct 0 ms 212 KB Output is correct
18 Correct 0 ms 212 KB Output is correct
19 Correct 0 ms 212 KB Output is correct
20 Correct 0 ms 212 KB Output is correct
21 Correct 2 ms 340 KB Output is correct
22 Correct 2 ms 340 KB Output is correct
23 Correct 1 ms 340 KB Output is correct
24 Correct 4 ms 340 KB Output is correct
25 Correct 4 ms 340 KB Output is correct
26 Correct 4 ms 340 KB Output is correct
27 Correct 10 ms 340 KB Output is correct
28 Correct 10 ms 340 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 340 KB Output is correct
2 Correct 4 ms 452 KB Output is correct
3 Correct 16 ms 992 KB Output is correct
4 Correct 699 ms 980 KB Output is correct
5 Correct 10 ms 596 KB Output is correct
6 Correct 9 ms 696 KB Output is correct
7 Correct 10 ms 980 KB Output is correct
8 Correct 694 ms 1068 KB Output is correct
9 Correct 321 ms 596 KB Output is correct
10 Correct 306 ms 596 KB Output is correct
11 Correct 9 ms 980 KB Output is correct
12 Execution timed out 1093 ms 1012 KB Time limit exceeded
13 Halted 0 ms 0 KB -