10089 2024. 03. 26 17:58:06 111 Génsebész cpp17 Időlimit túllépés 80/100 264ms 21756 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<long double,char>s;
ordered_set<long double>z[200];

void Kezd(string S){
	int n=S.size();
	s[-1]=0;
	for(int i=0;i<n;i++){
		s[1e18*i/n]=S[i];
		z[S[i]].insert(1e18*i/n);
	}
	s[1e18]=0;
}

void Beszur(int i,char x){
	auto it=s.find_by_order(i);
	long 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);
	long 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;
	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 1836 KiB
2 Elfogadva 3ms 2428 KiB
subtask2 30/30
3 Elfogadva 3ms 2376 KiB
4 Elfogadva 3ms 2876 KiB
5 Elfogadva 4ms 3204 KiB
6 Elfogadva 4ms 3324 KiB
7 Elfogadva 6ms 3464 KiB
8 Elfogadva 71ms 13592 KiB
subtask3 30/30
9 Elfogadva 3ms 3268 KiB
10 Elfogadva 3ms 3596 KiB
11 Elfogadva 4ms 3468 KiB
12 Elfogadva 4ms 3748 KiB
13 Elfogadva 6ms 4196 KiB
14 Elfogadva 97ms 17860 KiB
subtask4 20/20
15 Elfogadva 3ms 4052 KiB
16 Elfogadva 3ms 4044 KiB
17 Elfogadva 3ms 4364 KiB
18 Elfogadva 3ms 4496 KiB
19 Elfogadva 123ms 21756 KiB
subtask5 0/20
20 Elfogadva 4ms 5308 KiB
21 Elfogadva 6ms 5612 KiB
22 Elfogadva 7ms 6076 KiB
23 Elfogadva 13ms 7708 KiB
24 Időlimit túllépés 264ms 20980 KiB