Cod sursa(job #2466963)

Utilizator educationalLets Go educational Data 3 octombrie 2019 13:36:44
Problema Arbori de intervale Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
    #include <bits/stdc++.h>
    using namespace std;
     
    set<int> letters[256];
    string S;
    int Q;
     
     
    int main() {
     
    	int i, x, y, l, r, op;
    	char let;
     
    	cin >> S;
    	for(i = 0; i < S.size(); i++) letters[ S[i] ].insert(i + 1);
    	for(i = 'a'; i <= 'z'; i++) letters[i].insert(1000000);
     
    	cin >> Q;
    	while(Q--)
    	{
    		cin >> op;
    		if(op == 1){
    			cin >> x >> let;
    			letters[ S[x-1] ].erase(x);
    			S[x-1] = let;
     
    			letters[ S[x-1] ].insert(x);
    		}
     
    		else{
    			cin >> l >> r;
     
    			int cnt = 0;
    			for(i = 'a'; i <= 'z'; i++)
    				if(*(letters[i].lower_bound(l)) <= r) ++cnt; 
     
    			cout << cnt << '\n';
    		}
    	}
     
     
    	return 0;
    }