10093 2024. 03. 26 18:05:40 111 Génsebész cpp17 Időlimit túllépés 80/100 208ms 30164 KiB
#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 1980 KiB
2 Elfogadva 3ms 2568 KiB
subtask2 30/30
3 Elfogadva 3ms 2672 KiB
4 Elfogadva 3ms 2896 KiB
5 Elfogadva 3ms 3000 KiB
6 Elfogadva 4ms 3292 KiB
7 Elfogadva 4ms 3632 KiB
8 Elfogadva 50ms 11044 KiB
subtask3 30/30
9 Elfogadva 3ms 3616 KiB
10 Elfogadva 3ms 3596 KiB
11 Elfogadva 3ms 3868 KiB
12 Elfogadva 3ms 4116 KiB
13 Elfogadva 4ms 4300 KiB
14 Elfogadva 71ms 14452 KiB
subtask4 20/20
15 Elfogadva 3ms 4148 KiB
16 Elfogadva 3ms 4420 KiB
17 Elfogadva 3ms 4324 KiB
18 Elfogadva 3ms 4328 KiB
19 Elfogadva 94ms 17148 KiB
subtask5 0/20
20 Elfogadva 4ms 5032 KiB
21 Elfogadva 6ms 5288 KiB
22 Elfogadva 7ms 5800 KiB
23 Elfogadva 13ms 7036 KiB
24 Időlimit túllépés 208ms 30164 KiB