Submission #67750972
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
#define F first
#define S second
#define R cin>>
#define ex exit(0)
#define ln cout<<'\n'
#define ll long long
#define in(a) insert(a)
#define pb(a) push_back(a)
#define pd(a) printf("%.12f\n",a)
#define mem(a) memset(a,0,sizeof(a))
#define all(c) (c).begin(),(c).end()
#define iter(c) __typeof((c).begin())
#define rrep(i,n) for(ll i=(ll)(n)-1;i>=0;i--)
#define REP(i,m,n) for(ll i=(ll)(m);i<(ll)(n);i++)
#define rep(i,n) REP(i,0,n)
#define tr(it,c) for(iter(c) it=(c).begin();it!=(c).end();it++)
ll check(ll n,ll m,ll x,ll y){return x>=0&&x<n&&y>=0&&y<m;}void pr(){ln;}
template<class A,class...B>void pr(const A &a,const B&...b){cout<<a<<(sizeof...(b)?" ":"");pr(b...);}
template<class A>void PR(A a,ll n){rep(i,n)cout<<(i?" ":"")<<a[i];ln;}
const ll MAX=1e9+7,MAXL=1LL<<61,dx[8]={-1,0,1,0,-1,-1,1,1},dy[8]={0,1,0,-1,-1,1,1,-1};
typedef pair<ll,ll> P;
class RMQ{
public:
int n;
P dat[2222222];
void init(int _n){
n=1;
while(n<_n)n*=2;
rep(i,2*n) dat[i]=P(-MAXL,-1);
}
void update(int k,P a){
k+=n-1;dat[k]=a;
while(k>0){
k=(k-1)/2;
dat[k]=max(dat[k*2+1],dat[k*2+2]);
}
}
P query(int a,int b){return query(a,b,0,0,n);}
P query(int a,int b,int k,int l,int r){
if(r<=a||b<=l) return P(-MAXL,-1);
if(a<=l&&r<=b) return dat[k];
P vl=query(a,b,k*2+1,l,(l+r)/2);
P vr=query(a,b,k*2+2,(l+r)/2,r);
return max(vl,vr);
}
};
RMQ t;
set<ll> se[26];
set<P> s[26];
ll m=1;
void IN(P p,ll k) {
iter(s[k]) it=s[k].upper_bound(P(p.F,MAXL));
if(it!=s[k].begin()) {
it--;
P q=*it;
if(q.F<=p.F&&p.F<=q.S||abs(p.F-q.F)<=m||abs(p.F-q.S)<=m) {
p.F=min(p.F,q.F);
p.S=max(p.S,q.S);
s[k].erase(it);
t.update(q.F,P(-MAXL,-1));
}
}
while(1) {
it=s[k].upper_bound(P(p.F,-1));
if(it==s[k].end()) break;
P q=*it;
if(abs(p.S-q.F)>m&&abs(q.S-p.F)>m) break;
else {
p.F=min(p.F,q.F);
p.S=max(p.S,q.S);
s[k].erase(it);
t.update(q.F,P(-MAXL,-1));
}
}
s[k].in(p);
t.update(p.F,P(p.S-p.F,p.F));
}
void DEL(P p,ll k) {
iter(s[k]) it=s[k].upper_bound(P(p.F,MAXL));
vector<P> v;
if(it!=s[k].begin()) {
it--;
P q=*it;
if(q.F!=p.F) {
iter(se[k]) it2=se[k].lower_bound(p.F);
if(it2!=se[k].begin()) {
it2--;
v.pb(P(q.F,*it2));
}
}
if(q.S!=p.F) {
iter(se[k]) it2=se[k].lower_bound(p.F);
if(it2!=se[k].end()) {
v.pb(P(*it2,q.S));
}
}
s[k].erase(it);
t.update(q.F,P(-MAXL,-1));
}
if(v.size()==2&&abs(v[0].S-v[1].F)<=m) {
v[0].S=v[1].S;
v.pop_back();
}
rep(i,v.size()) {
s[k].in(v[i]);
t.update(v[i].F,P(v[i].S-v[i].F,v[i].F));
}
}
void Init() {}
void Main() {
ll n,T;
string e;
cin >> n >> T >> e;
t.init(n);
rep(i,n) {
ll k=e[i]-'a';
se[k].in(i);
IN(P(i,i),k);
}
while(T--) {
ll z;
R z;
if(z==1) {
ll x;
char c;
cin >> x >> c;
x--;
ll k=e[x]-'a';
se[k].erase(x);
DEL(P(x,x),k);
e[x]=c;
k=e[x]-'a';
se[k].in(x);
IN(P(x,x),k);
} else {
ll l,r;
cin >> l >> r;
l--,r--;
P p=t.query(l,r+1);
ll x=p.S,y=x+p.F;
ll ans=min(y,r)-x+1;
if(r<y) {
t.update(p.S,P(-MAXL,-1));
P q=t.query(l,r+1);
ll x2=q.S,y2=x2+q.F;
ans=max(ans,min(y2,r)-x2+1);
t.update(p.S,p);
}
rep(i,26) {
iter(s[i]) it=s[i].lower_bound(P(l,-1));
if(it!=s[i].begin()) {
it--;
P q=*it;
if(l<=q.S) ans=max(ans,min(r,q.S)-l+1);
}
}
pr(ans);
}
}
}
int main(){ios::sync_with_stdio(0);cin.tie(0);Init();ll T=1;if(0)R T;while(T--)Main();return 0;}
Submission Info
Submission Time
2025-07-19 22:24:32+0900
Task
F - Max Combo
User
kzyKT
Language
C++ 20 (gcc 12.2)
Score
525
Code Size
3953 Byte
Status
AC
Exec Time
3834 ms
Memory
92992 KiB
Compile Error
Main.cpp: In function ‘void IN(P, long long int)’:
Main.cpp:61:16: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]
61 | if(q.F<=p.F&&p.F<=q.S||abs(p.F-q.F)<=m||abs(p.F-q.S)<=m) {
| ^
Judge Result
Set Name
Sample
All
Score / Max Score
0 / 0
525 / 525
Status
Set Name
Test Cases
Sample
sample_01.txt, sample_02.txt
All
evil_01.txt, evil_02.txt, evil_03.txt, evil_04.txt, evil_05.txt, evil_06.txt, evil_07.txt, evil_08.txt, evil_09.txt, evil_10.txt, evil_11.txt, evil_12.txt, evil_13.txt, evil_14.txt, evil_15.txt, evil_16.txt, evil_17.txt, evil_18.txt, evil_19.txt, evil_20.txt, evil_21.txt, evil_22.txt, evil_23.txt, evil_24.txt, evil_25.txt, evil_26.txt, evil_27.txt, evil_28.txt, sample_01.txt, sample_02.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt
Case Name
Status
Exec Time
Memory
evil_01.txt
AC
3412 ms
92992 KiB
evil_02.txt
AC
3178 ms
92924 KiB
evil_03.txt
AC
3229 ms
77440 KiB
evil_04.txt
AC
2915 ms
77376 KiB
evil_05.txt
AC
3030 ms
72096 KiB
evil_06.txt
AC
2851 ms
71996 KiB
evil_07.txt
AC
2948 ms
69528 KiB
evil_08.txt
AC
2782 ms
69532 KiB
evil_09.txt
AC
2688 ms
67804 KiB
evil_10.txt
AC
2535 ms
67944 KiB
evil_11.txt
AC
2635 ms
67136 KiB
evil_12.txt
AC
2585 ms
67040 KiB
evil_13.txt
AC
2586 ms
66332 KiB
evil_14.txt
AC
2417 ms
66236 KiB
evil_15.txt
AC
2413 ms
65708 KiB
evil_16.txt
AC
2253 ms
65764 KiB
evil_17.txt
AC
2413 ms
65204 KiB
evil_18.txt
AC
2312 ms
65304 KiB
evil_19.txt
AC
2368 ms
65024 KiB
evil_20.txt
AC
2332 ms
65024 KiB
evil_21.txt
AC
1041 ms
61772 KiB
evil_22.txt
AC
985 ms
61816 KiB
evil_23.txt
AC
1035 ms
61868 KiB
evil_24.txt
AC
981 ms
61788 KiB
evil_25.txt
AC
636 ms
61872 KiB
evil_26.txt
AC
635 ms
61700 KiB
evil_27.txt
AC
611 ms
61844 KiB
evil_28.txt
AC
702 ms
61900 KiB
sample_01.txt
AC
14 ms
38096 KiB
sample_02.txt
AC
15 ms
38224 KiB
test_01.txt
AC
3797 ms
91952 KiB
test_02.txt
AC
3606 ms
91996 KiB
test_03.txt
AC
3834 ms
91964 KiB
test_04.txt
AC
3526 ms
91976 KiB
test_05.txt
AC
3710 ms
92028 KiB
test_06.txt
AC
3541 ms
91892 KiB
test_07.txt
AC
3736 ms
91876 KiB
test_08.txt
AC
3541 ms
92000 KiB
test_09.txt
AC
3190 ms
81116 KiB
test_10.txt
AC
3111 ms
81264 KiB
test_11.txt
AC
3024 ms
80904 KiB
test_12.txt
AC
2919 ms
80996 KiB
test_13.txt
AC
2983 ms
80864 KiB
test_14.txt
AC
3040 ms
80824 KiB
test_15.txt
AC
2981 ms
80868 KiB
test_16.txt
AC
2863 ms
80876 KiB
test_17.txt
AC
2959 ms
80868 KiB
test_18.txt
AC
2858 ms
80848 KiB
test_19.txt
AC
463 ms
38260 KiB
test_20.txt
AC
461 ms
38264 KiB
test_21.txt
AC
279 ms
38300 KiB
test_22.txt
AC
281 ms
38288 KiB
test_23.txt
AC
230 ms
38232 KiB
test_24.txt
AC
220 ms
38220 KiB
test_25.txt
AC
184 ms
38216 KiB
test_26.txt
AC
194 ms
38240 KiB
test_27.txt
AC
174 ms
38212 KiB
test_28.txt
AC
168 ms
38180 KiB
test_29.txt
AC
298 ms
62640 KiB
test_30.txt
AC
302 ms
62684 KiB
test_31.txt
AC
933 ms
61840 KiB
test_32.txt
AC
879 ms
61932 KiB
test_33.txt
AC
912 ms
61848 KiB
test_34.txt
AC
930 ms
61868 KiB
test_35.txt
AC
940 ms
61932 KiB
test_36.txt
AC
882 ms
61776 KiB
test_37.txt
AC
956 ms
61748 KiB
test_38.txt
AC
980 ms
61832 KiB
test_39.txt
AC
1528 ms
62672 KiB
test_40.txt
AC
1171 ms
62096 KiB
test_41.txt
AC
2405 ms
68736 KiB
test_42.txt
AC
2069 ms
65844 KiB
test_43.txt
AC
1717 ms
92044 KiB
test_44.txt
AC
1717 ms
91912 KiB