10095 2024. 03. 26 18:12:47 111 Génsebész cpp17 Elfogadva 100/100 195ms 30548 KiB
#pragma GCC optimize("Ofast")

#ifdef ONLINE_JUDGE
#include "grader.h"
#endif

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;

template<typename T>
using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;

template<typename T, typename V>
using ordered_map = tree<T, V, less<T>, rb_tree_tag, tree_order_statistics_node_update>;

ordered_map<double,char>s;
ordered_set<double>z[200];

void Kezd(string S){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int n=S.size();
	s[-1]=0;
	for(int i=0;i<n;i++){
		s[1e9*i/n]=S[i];
		z[S[i]].insert(1e9*i/n);
	}
	s[1e9]=0;
}

void Beszur(int i,char x){
	auto it=s.find_by_order(i);
	double y=(it->first+next(it)->first)/2;
	s[y]=x;
	z[x].insert(y);
}

void Mutal(int i,char x){
	auto it=s.find_by_order(i);
	double y=it->first;
	z[it->second].erase(y);
	s[y]=x;
	z[x].insert(y);
}

void Kivag(int i,int j){
	auto it1=s.find_by_order(i);
	auto it2=s.find_by_order(j+1);
	while(it1!=it2){
		z[it1->second].erase(it1->first);
		it1=s.erase(it1);
	}
}

int Szamlal(int i,int j,char x){
	auto it1=s.find_by_order(i);
	auto it2=s.find_by_order(j+1);
	return z[x].order_of_key(it2->first)-z[x].order_of_key(it1->first);
}

string Eredmeny(){
	string ans;
	ans.reserve(s.size()-2);
	for(auto [_,x]:s){
		if(x==0)continue;
		ans+=x;
	}
	return ans;
}

#ifndef ONLINE_JUDGE
int main(){
	freopen("be2.txt","r",stdin);
	string S;
	cin>>S;
	Kezd(S);
	while(true){
		int o;
		cin>>o;
		if(o==0){
			break;
		}
		if(o==1){
			int i;
			char x;
			cin>>i>>x;
			Beszur(i,x);
		}
		if(o==2){
			int i;
			char x;
			cin>>i>>x;
			Mutal(i,x);
		}
		if(o==3){
			int i,j;
			cin>>i>>j;
			Kivag(i,j);
		}
		if(o==4){
			int i,j;
			char x;
			cin>>i>>j>>x;
			int res=Szamlal(i,j,x);
			int ans;
			cin>>ans;
			ans--;
			if(res!=ans){
				cout<<"got "<<res<<'\n';
				cout<<"exp "<<ans<<'\n';
				return 1;
			}
		}
		if(o==5){
			string res=Eredmeny();
			string ans;
			cin>>ans;
			ans.pop_back();
			if(res!=ans){
				cout<<"got "<<res<<'\n';
				cout<<"exp "<<ans<<'\n';
				return 1;
			}
		}
	}
	return 0;
}
#endif
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 2052 KiB
2 Elfogadva 3ms 2632 KiB
subtask2 30/30
3 Elfogadva 3ms 2616 KiB
4 Elfogadva 3ms 2832 KiB
5 Elfogadva 3ms 2796 KiB
6 Elfogadva 3ms 2816 KiB
7 Elfogadva 4ms 3272 KiB
8 Elfogadva 50ms 10964 KiB
subtask3 30/30
9 Elfogadva 3ms 3400 KiB
10 Elfogadva 3ms 3636 KiB
11 Elfogadva 3ms 3872 KiB
12 Elfogadva 4ms 4096 KiB
13 Elfogadva 4ms 4516 KiB
14 Elfogadva 72ms 14460 KiB
subtask4 20/20
15 Elfogadva 3ms 4192 KiB
16 Elfogadva 3ms 4208 KiB
17 Elfogadva 3ms 4224 KiB
18 Elfogadva 3ms 4488 KiB
19 Elfogadva 93ms 17492 KiB
subtask5 20/20
20 Elfogadva 4ms 5380 KiB
21 Elfogadva 6ms 5832 KiB
22 Elfogadva 7ms 6060 KiB
23 Elfogadva 13ms 7352 KiB
24 Elfogadva 195ms 30548 KiB