제출 #1360201

#제출 시각아이디문제언어결과실행 시간메모리
1360201MuhammadSaramStreet Lamps (APIO19_street_lamps)C++20
20 / 100
131 ms5088 KiB
#include <bits/stdc++.h>

using namespace std;

#define endl '\n'

const int M = 3e5 + 1;

int seg[M*2];

void modify(int p,int x,int v=0,int s=0,int e=M)
{
	if (s+1==e)
	{
		seg[v]=x;
		return;
	}
	int mid=(s+e)/2, lc=v+1, rc=v+(mid-s)*2;
	if (p<mid)
		modify(p,x,lc,s,mid);
	else
		modify(p,x,rc,mid,e);
	seg[v]=max(seg[lc],seg[rc]);
}

int get(int l,int r,int v=0,int s=0,int e=M)
{
	if (l>=e or r<=s) return 0;
	if (l<=s && e<=r) return seg[v];
	int mid=(s+e)/2, lc=v+1, rc=v+(mid-s)*2;
	return max(get(l,r,lc,s,mid),get(l,r,rc,mid,e));
}

int main()
{
	ios::sync_with_stdio(0);
	cin.tie(NULL), cout.tie(NULL);

	int n,q;
	cin>>n>>q;
	string s;
	cin>>s;
	for (int i=0;i<n;i++)
		if (s[i]=='1')
			modify(i,0);
		else
			modify(i,q+1);
	for (int i=1;i<=q;i++)
	{
		string s;
		cin>>s;
		if (s[0]=='t')
		{
			int x;
			cin>>x;
			modify(x-1,i);
		}
		else
		{
			int a,b;
			cin>>a>>b;a--, b--;
			cout<<max(0,i-get(a,b))<<endl;
		}
	}

	return 0;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…