Submission #311142

# Submission time Handle Problem Language Result Execution time Memory
311142 2020-10-09T14:00:08 Z shivensinha4 Cake (CEOI14_cake) C++17
0 / 100
78 ms 16548 KB
#include <bits/stdc++.h> 
using namespace std; 
#define for_(i, s, e) for (int i = s; i < (int) e; i++)
#define for__(i, s, e) for (ll i = s; i < e; i++)
typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> ii;
#define endl '\n'

class SegmentTree {
	private:
		vi tree, raw; int n;
		
		int merge(int a, int b) {
			return max(a, b);
		}
		
		void buildTree(int l, int r, int p) {
			if (l == r) {
				tree[p] = raw[l];
				return;
			}
			
			int mid = (l + r) / 2;
			int c1 = 2*p+1, c2 = 2*p+2;
			buildTree(l, mid, c1); buildTree(mid+1, r, c2);
			tree[p] = merge(tree[c1], tree[c2]);
		}
		
		void update(int i, int val, int l, int r, int p) {
			if (l > i or r < i) return;
			if (l == r) {
				tree[p] = val;
				return;
			}
			
			int mid = (l + r) / 2;
			int c1 = 2*p+1, c2 = 2*p+2;
			update(i, val, l, mid, c1); update(i, val, mid+1, r, c2);
			tree[p] = merge(tree[c1], tree[c2]);
		}
		
		int mx(int i, int j, int l, int r, int p) {
			if (l > j or r < i) return 0;
			if (l >= i and r <= j) return tree[p];
			
			int mid = (l + r) / 2;
			int c1 = 2*p+1, c2 = 2*p+2;
			return merge(mx(i, j, l, mid, c1), mx(i, j, mid+1, r, c2));
		}
	
	public: 
		SegmentTree(vi input) {
			raw = input;
			n = raw.size();
			tree.resize(4*n);
			buildTree(0, n-1, 0);
		}
		
		int mx(int i, int j) {
			return mx(i, j, 0, n-1, 0);
		}
		
		void update(int i, int val) {
			update(i, val, 0, n-1, 0);
		}
};

const int MXV = 750000;
int pos[MXV+2];

int main() {
	#ifdef shiven
	freopen("test.in", "r", stdin);
	#endif
	
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	
	int n, a, q; cin >> n >> a;
	a -= 1;
	vi nums(n);
	for_(i, 0, n) {
		cin >> nums[i];
		pos[nums[i]] = i;
	}
	SegmentTree tree(nums);
	vi mod = nums;
	sort(mod.begin(), mod.end(), greater<int>());
	set<ii, greater<ii>> s;
	for_(i, 0, min(10, n)) s.insert({mod[i], i});
	
	cin >> q;
	while (q--) {
		char c; cin >> c;
		if (c == 'F') {
			int k; cin >> k;
			k -= 1;
			
			if (k == a) {
				cout << 0 << endl;
				continue;
			}
			int bef = abs(k-a), lo, hi, ans, largest = tree.mx(min(a, k), max(a, k));
			if (k < a) {
				lo = a+1, hi = ans = n;
				while (lo < hi) {
					int mid = (lo+hi)/2;
					if (tree.mx(a+1, mid) >= largest) {
						ans = hi = mid;
					} else {
						lo = mid+1;
					}
				}
			} else {
				lo = 0, hi = a, ans = -1;
				while (lo < hi) {
					int mid = (lo+hi)/2;
					if (tree.mx(mid, a-1) >= largest) {
						ans = mid;
						lo = mid+1;
					} else {
						hi = mid;
					}
				}
			}
			
			cout << bef+abs(ans-a)-1 << endl;
		} else {
			assert(false);
			//cout << "current set of elements is: ";
			//for (auto i: s) cout << i.first << " ";
			//cout << endl;
			int x, y; cin >> x >> y;
			set<ii, greater<ii>> ss;
			x -= 1; y -= 1;
			int pt = 0, nv = -1;
			for (auto i: s) {
				if (ss.size()+1 == s.size()) break;
				else if (pt >= y) {
					if (i.second != x) {
						if (nv == -1) nv = i.first+1;
						ss.insert(i);
					}
				}
				else {
					tree.update(i.second, i.first+1);
					nums[i.second] += 1;
					ss.insert({i.first+1, i.second});	
					nv = i.first;
				}
				pt++;
			}
			
			//cout << "get new value " << nv << endl;
			tree.update(x, nv);
			ss.insert({nv, x});
			nums[x] = nv;
			swap(s, ss);
			//cout << "new set of elements is: ";
			//for (auto i: s) cout << i.first << " ";
			//cout << endl;
		}
	}

	return 0;
}
# Verdict Execution time Memory Grader output
1 Runtime error 1 ms 512 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 3 ms 1152 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Runtime error 4 ms 1184 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Runtime error 4 ms 1152 KB Execution killed with signal 11 (could be triggered by violating memory limits)
4 Runtime error 5 ms 1152 KB Execution killed with signal 11 (could be triggered by violating memory limits)
5 Runtime error 7 ms 2200 KB Execution killed with signal 11 (could be triggered by violating memory limits)
6 Runtime error 7 ms 2048 KB Execution killed with signal 11 (could be triggered by violating memory limits)
7 Runtime error 8 ms 2048 KB Execution killed with signal 11 (could be triggered by violating memory limits)
8 Runtime error 8 ms 2048 KB Execution killed with signal 11 (could be triggered by violating memory limits)
# Verdict Execution time Memory Grader output
1 Runtime error 36 ms 6896 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Runtime error 29 ms 6944 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Runtime error 29 ms 6896 KB Execution killed with signal 11 (could be triggered by violating memory limits)
4 Runtime error 1 ms 512 KB Execution killed with signal 11 (could be triggered by violating memory limits)
5 Runtime error 74 ms 16420 KB Execution killed with signal 11 (could be triggered by violating memory limits)
6 Runtime error 78 ms 16532 KB Execution killed with signal 11 (could be triggered by violating memory limits)
7 Runtime error 68 ms 16548 KB Execution killed with signal 11 (could be triggered by violating memory limits)
# Verdict Execution time Memory Grader output
1 Runtime error 2 ms 768 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Runtime error 2 ms 768 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Runtime error 14 ms 3644 KB Execution killed with signal 11 (could be triggered by violating memory limits)
4 Runtime error 14 ms 3644 KB Execution killed with signal 11 (could be triggered by violating memory limits)
5 Runtime error 2 ms 640 KB Execution killed with signal 11 (could be triggered by violating memory limits)
6 Runtime error 19 ms 4732 KB Execution killed with signal 11 (could be triggered by violating memory limits)
7 Runtime error 3 ms 1152 KB Execution killed with signal 11 (could be triggered by violating memory limits)
8 Runtime error 26 ms 6904 KB Execution killed with signal 11 (could be triggered by violating memory limits)
9 Runtime error 72 ms 16420 KB Execution killed with signal 11 (could be triggered by violating memory limits)
10 Runtime error 2 ms 640 KB Execution killed with signal 11 (could be triggered by violating memory limits)
11 Runtime error 6 ms 1792 KB Execution killed with signal 11 (could be triggered by violating memory limits)
12 Runtime error 56 ms 13288 KB Execution killed with signal 11 (could be triggered by violating memory limits)
13 Runtime error 73 ms 16420 KB Execution killed with signal 11 (could be triggered by violating memory limits)