提出 #60058979


ソースコード 拡げる

#include<bits/stdc++.h>
#define fo(i,l,r) for(int i=l;i<=r;++i)
#define fd(i,r,l) for(int i=r;i>=l;--i)
#define ll long long
#define I inline int
#define V inline void
#define B inline bool
#define L inline ll
#define pi pair<int,int>
#define mk make_pair
#define fi first
#define se second
#define pb push_back
#define vi vector<int>
#define vii vector<pi>
using namespace std;
const int N=1e6+10,mod=998244353;
char St;
I read() {
	int x=0,y=1;char c=getchar();
	while(c<48||c>57) {if(c==45)y=-y;c=getchar();}
	while(c>=48&&c<=57) x=(x<<1)+(x<<3)+(c^48),c=getchar();
	return x*y;
}
L ksm(ll x,int y) {ll t(1);for(;y;y>>=1,x=x*x%mod)if(y&1)t=t*x%mod;return t;}
int n,pre[N],suf[N],ans,q,a[N],tr[N<<2];
char c[N];
char Ed;
int main() {
	cerr<<"memory:"<<(&St-&Ed)/1024.0<<endl;
	n=read();q=read();scanf("%s",c+1);
	fo(i,1,n) {
		pre[i]=pre[i-1];
		if(c[i]=='1') pre[i]=pre[i-1]+1;
	}
	fd(i,n,1) {
		suf[i]=suf[i+1];
		if(c[i]=='2') suf[i]=suf[i+1]+1;
	}
	vi num;
	fo(i,1,n) {
		if(c[i]=='/') {
			num.pb(i);
		}
	}
	while(q--) {
		int l=read(),r=read();
		int l1=lower_bound(num.begin(),num.end(),l)-num.begin(),r1=upper_bound(num.begin(),num.end(),r)-num.begin();
		r1--;
		if(l1>r1) {puts("0");continue;}
		int le=0,ri=n,ans(0);
		while(le<=ri) {
			int mid=le+ri>>1;
			int _l=l1,_r=r1,_mid,_p(-1),_q(-1);
			while(_l<=_r) {
				_mid=_l+_r>>1;
				if(pre[num[_mid]]-pre[l-1]>=mid) _p=_mid,_r=_mid-1;
				else _l=_mid+1;
			}
			_l=l1,_r=r1;
			while(_l<=_r) {
				_mid=_l+_r>>1;
				if(suf[num[_mid]]-suf[r+1]>=mid) _q=_mid,_l=_mid+1;
				else _r=_mid-1;
			}
			if(_p!=-1&&_q!=-1&&_p<=_q) le=mid+1,ans=mid;
			else ri=mid-1;
		}
		printf("%d\n",ans*2+1);
	}
	cerr<<"time:"<<clock()<<endl;
	return 0;
}

提出情報

提出日時
問題 E - 11/22 Subsequence
ユーザ OIer2008
言語 C++ 20 (gcc 12.2)
得点 500
コード長 1781 Byte
結果 AC
実行時間 231 ms
メモリ 5036 KiB

コンパイルエラー

Main.cpp: In function ‘int main()’:
Main.cpp:53:35: warning: suggest parentheses around ‘+’ inside ‘>>’ [-Wparentheses]
   53 |                         int mid=le+ri>>1;
      |                                 ~~^~~
Main.cpp:56:40: warning: suggest parentheses around ‘+’ inside ‘>>’ [-Wparentheses]
   56 |                                 _mid=_l+_r>>1;
      |                                      ~~^~~
Main.cpp:62:40: warning: suggest parentheses around ‘+’ inside ‘>>’ [-Wparentheses]
   62 |                                 _mid=_l+_r>>1;
      |                                      ~~^~~
Main.cpp:31:32: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   31 |         n=read();q=read();scanf("%s",c+1);
      |                           ~~~~~^~~~~~~~~~

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 500 / 500
結果
AC × 1
AC × 25
セット名 テストケース
Sample 00_sample_00.txt
All 00_sample_00.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 01_random_18.txt, 01_random_19.txt, 02_corner_00.txt, 02_corner_01.txt, 02_corner_02.txt, 02_corner_03.txt
ケース名 結果 実行時間 メモリ
00_sample_00.txt AC 1 ms 3892 KiB
01_random_00.txt AC 229 ms 5036 KiB
01_random_01.txt AC 197 ms 4420 KiB
01_random_02.txt AC 212 ms 4992 KiB
01_random_03.txt AC 202 ms 4756 KiB
01_random_04.txt AC 231 ms 4928 KiB
01_random_05.txt AC 211 ms 4548 KiB
01_random_06.txt AC 183 ms 4852 KiB
01_random_07.txt AC 114 ms 4484 KiB
01_random_08.txt AC 198 ms 4908 KiB
01_random_09.txt AC 208 ms 4472 KiB
01_random_10.txt AC 147 ms 4724 KiB
01_random_11.txt AC 164 ms 4592 KiB
01_random_12.txt AC 162 ms 4832 KiB
01_random_13.txt AC 179 ms 4660 KiB
01_random_14.txt AC 185 ms 4992 KiB
01_random_15.txt AC 146 ms 4572 KiB
01_random_16.txt AC 222 ms 4984 KiB
01_random_17.txt AC 170 ms 4560 KiB
01_random_18.txt AC 156 ms 4920 KiB
01_random_19.txt AC 28 ms 4500 KiB
02_corner_00.txt AC 18 ms 4860 KiB
02_corner_01.txt AC 7 ms 3816 KiB
02_corner_02.txt AC 4 ms 3824 KiB
02_corner_03.txt AC 4 ms 3936 KiB