Submission #337857

# Submission time Handle Problem Language Result Execution time Memory
337857 2020-12-22T03:44:43 Z tengiz05 Collider (IZhO11_collider) C++17
100 / 100
978 ms 64364 KB
#include <bits/stdc++.h>
#include <bits/extc++.h>
using namespace __gnu_pbds;
using namespace std;
template<class T> using ordered_set = tree<T, null_type, less_equal<T>, rb_tree_tag, tree_order_statistics_node_update>;
#define int long long
#define FASTIO ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define all(x) (x).begin(), (x).end()
#define pb push_back
#define pii pair<int, int>
#define ff first
#define ss second
#define PI acos(-1)
#define ld long double
template <class T> bool ckmin(T& a, const T& b) {return a > b ? a = b, true : false;}
template <class T> bool ckmax(T& a, const T& b) {return a < b ? a = b, true : false;}
const int mod = 1e9+7, N = 2e5+5;
int msb(int val){return sizeof(int)*8-__builtin_clzll(val);}
int n, m, k;

void solve(int test_case){
	int i, j;
	ordered_set<pair<int, char>> s;
	cin >> n >> m;
	s.insert({mod*mod, (char)125});
	for(i=0;i<n;i++){
		char c;
		cin >> c;
		s.insert({i*mod+10000000, c});
	}
	while(m--){
		char type;
		cin >> type;
	//	for(auto [x, y] : s )cout << y;
	//	cout << '\n';
		if(type == 'a'){
			int l, r;
			cin >> l >> r;
			l--,r--;
			auto x = s.find_by_order(l);
			char val = (*x).ss;
			s.erase(x);
			x = s.find_by_order(r);
			int dist;
			if(x == s.begin()){
				dist = (*x).ff/2;
			}else {
				auto y = x;y--;
				dist = ((*x).ff+(*y).ff)/2;
			}
			s.insert({dist, val});
			assert((*s.find_by_order(r)).ss == val);
		}else {
			int p;
			cin >> p;
			p--;
			char ans = (*s.find_by_order(p)).ss;
			cout << ans << '\n';
		}
	}
	return;
}

signed main(){
	FASTIO;
#define MULTITEST 0
#if MULTITEST
	int _T;
	cin >> _T;
	for(int T_CASE = 1; T_CASE <= _T; T_CASE++)
		solve(T_CASE);
#else
	solve(1);
#endif
	return 0;
}




Compilation message

collider.cpp: In function 'void solve(long long int)':
collider.cpp:22:9: warning: unused variable 'j' [-Wunused-variable]
   22 |  int i, j;
      |         ^
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 7 ms 364 KB Output is correct
3 Correct 77 ms 6764 KB Output is correct
4 Correct 722 ms 51308 KB Output is correct
5 Correct 753 ms 51428 KB Output is correct
6 Correct 855 ms 57820 KB Output is correct
7 Correct 969 ms 64256 KB Output is correct
8 Correct 978 ms 64364 KB Output is correct
9 Correct 968 ms 64236 KB Output is correct
10 Correct 935 ms 64236 KB Output is correct