Submission #68198389
Source Code Expand
#include<bits/stdc++.h>
using namespace std;
#define beg begin
#define All(A) A.beg(),A.end()
#define pb push_back
#define fir first
#define sec second
#define gr greater<>()
#define Lsh(A) sort(All(A)),\
A.erase(unique(All(A)),A.end());
#define u_set unordered_set
#define u_map unordered_map
#define lwb lower_bound
#define upb upper_bound
using ull=unsigned long long;
using bint=__int128;
using uint=unsigned int;
using ll=long long;
using ld=long double;
using pii=pair<int,int>;
using vi=vector<int>;
using gi=greater<int>;
using str=string;
using bqi=priority_queue<int>;
using lqi=priority_queue<int,vi,gi>;
using qi=queue<int>;
using si=set<int>;
using usi=u_set<int>;
using vll=vector<ll>;
using pll=pair<ll,ll>;
using vvi=vector<vi>;
using vvl=vector<vll>;
using vpi=vector<pii>;
using ply=vll;
mt19937_64 Rng(time(0));
ll rnd(int l,int r)
{return Rng()%(r-l+1)+l;}
namespace Binom{
const int p=998244353;
const int i2=(p+1)/2;
ll ksm(ll a,ll b)
{
ll ans=1;while(b)
{
if(b&1)ans=ans*a%p;
a=a*a%p;b>>=1;
}return ans;
}const int Msz=1e6+5;
ll fc[Msz],iv[Msz];
void init_C(int n)
{
fc[0]=1;for(int i=1;i<=n;i++)fc[i]=fc[i-1]*i%p;
iv[n]=ksm(fc[n],p-2);for(int i=n-1;i>=0;i--)
iv[i]=iv[i+1]*(i+1)%p;
}ll C(int n,int m)
{
if(n<m||m<0)return 0;
return fc[n]*iv[m]%p*iv[n-m]%p;
}}using Binom::C;
using Binom::init_C;
namespace Poly
{
const int p=998244353;
const int N=1<<21;int rv[N];
const int g=3,ig=(p+1)/g;
ll ksm(ll a,ll b)
{
ll ans=1;while(b)
{
if(b&1)ans=ans*a%p;
a=a*a%p;b>>=1;
}return ans;
}
void init(int n)
{
for(int i=1;i<=n;i++)
{
rv[i]=rv[i>>1]>>1;
if(i&1)rv[i]|=(n>>1);
}
}
void NTT(ll *a,int l,int o)
{
for(int i=0;i<l;i++)
if(i<rv[i])swap(a[i],a[rv[i]]);
for(int d=1;d<l;d<<=1)
{
ll pw=ksm(g,(p-1)/d/2);
if(o<0)pw=ksm(pw,p-2);
for(int i=0;i<l;i+=(d<<1))
{
ll vl=1;
for(int j=i;j<i+d;j++)
{
ll x=a[j],y=a[j+d]*vl%p;
if((a[j]=x+y)>=p)a[j]-=p;
if((a[j+d]=x-y)<0)a[j+d]+=p;
vl=vl*pw%p;
}
}
}if(o<0)
{
ll vl=ksm(l,p-2);
for(int i=0;i<l;i++)
a[i]=a[i]*vl%p;
}
}
ply mul(ply f,ply g)
{
int n=f.size()-1,m=g.size()-1;
ply rs(n+m+1);int l=1;
while(l<=n+m)l<<=1;
static ll a[N],b[N];init(l);
for(int i=0;i<l;i++)a[i]=b[i]=0;
for(int i=0;i<=n;i++)a[i]=f[i];
for(int i=0;i<=m;i++)b[i]=g[i];
NTT(a,l,1),NTT(b,l,1);
for(int i=0;i<l;i++)a[i]=a[i]*b[i]%p;
NTT(a,l,-1);for(int i=0;i<=n+m;i++)
rs[i]=a[i];return rs;
}
}using Poly::mul;
namespace quickpow{
template<ll p>
ll qpow(bint a,ll b)
{
bint ans=1;while(b)
{
if(b&1)ans=ans*a%p;
a=a*a%p,b>>=1;
}return ans;
}template<typename T>
T qpowt(T a,ll b)
{
T ans;while(b)
{
if(b&1)ans=ans*a;
a=a*a,b>>=1;
}return ans;
}ll Ksm(bint a,ll b,ll p)
{
bint ans=1;while(b)
{
if(b&1)ans=ans*a%p;
a=a*a%p,b>>=1;
}return ans;
}
}using namespace quickpow;
namespace num_th{
vi ckl={2,325,9375,28178,
450775,9780504,1795265022};
template<typename T>
T gcd(T a,T b)
{
while(b^=a^=b^=a%=b);
return a;
}
bool ckpr(ll n)
{
if(n<3||!(n&1))return (n==2);
if(n%3==0)return (n==3);
ll u=n-1;int t=0;
while(!(u&1))u>>=1,t++;
for(int a:ckl)
{
if(a%n<=1||a%n==n-1)continue;
ll v=Ksm(a,u,n);
if(v==1)continue;int s;
for(s=0;s<t;s++)
{
if(v==n-1)break;
v=bint(v)*v%n;
}if(s==t)return false;
}return true;
}ll gtfc(ll x)
{
ll s=0,t=0,c=rnd(1,x-1);
for(int k=1;;k<<=1)
{
ll vl=1;s=t;
for(int j=1;j<=k;j++)
{
t=(bint(t)*t+c)%x;
vl=bint(vl)*abs(t-s)%x;
if(!vl)return gtfc(x);
if(!(j&127))
{
ll d=gcd(x,vl);
if(d>1)return d;
}
}ll d=gcd(x,vl);
if(d>1)return d;
}
}
}using num_th::ckpr;
using num_th::gtfc;
const int p=998244353;//the Mod
const auto ksm=qpow<p>;
const int N=2e5+5;
int n,q,a[N];
int cnt=0;
set<pii> s,st;
void gt()
{
if(s.size()==0)
{
if(cnt==n)cout<<n<<'\n';
else if(a[1]==0&&a[n]==0)cout<<"3\n";
else cout<<"2\n";return;
}
int ans=(a[1]==0&&a[2]==1);
ans+=(a[n]==0&&a[n-1]==1);
ans+=int(s.size())*3-1;
if(s.size())
{
if(s.begin()->first!=1)ans++;
if(s.rbegin()->second!=n)ans++;
}cout<<ans<<'\n';
}void ins(int l,int r)
{
st.insert((pii){l,r});
if(l^r)s.insert((pii){l,r});
}void del(int l,int r)
{
st.erase((pii){l,r});
if(l^r)s.erase((pii){l,r});
}
void mf1(int x)
{
auto it=st.upper_bound((pii){x,1e9});
it--;int l=it->first,r=it->second;
del(l,r);if(l^x)ins(l,x-1);
if(r^x)ins(x+1,r);
}
void mf0(int x)
{
auto it=st.upper_bound((pii){x,1e9});
int Rl=-10,Rr=-10;if(it!=st.end())
Rl=it->first,Rr=it->second;
int Ll=-10,Lr=-10;if(it!=st.begin())
{it--;Ll=it->first;Lr=it->second;}
if(Lr+1==x&&x+1==Rl)
{
del(Rl,Rr),del(Ll,Lr);
ins(Ll,Rr);
}else if(Lr+1==x)
{
del(Ll,Lr);
ins(Ll,x);
}else if(x+1==Rl)
{
del(Rl,Rr);
ins(x,Rr);
}else ins(x,x);
}
void solve()
{
cin>>n;for(int i=1;i<=n;i++)cin>>a[i];
cnt=0;for(int i=1;i<=n;i++)
{
if(a[i]==1)continue;
int j=i;while(i+1<=n&&a[i+1]==0)
i++;st.insert((pii){j,i});
if(i^j)s.insert((pii){j,i});
}for(int i=1;i<=n;i++)cnt+=a[i];
cin>>q;for(int i=1;i<=q;i++)
{
int x;cin>>x;
if(a[x]==0)mf1(x);
else mf0(x);
cnt-=a[x];
a[x]^=1;
cnt+=a[x];
gt();
}
}void init(){/*init_C(Msz-5);*/}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
int t=1;init();//cin>>t;
while(t--)solve();
return 0;
}
Submission Info
Submission Time
2025-08-03 22:58:10+0900
Task
D - Insert XOR
User
Coffins
Language
C++ 17 (Clang 16.0.6)
Score
800
Code Size
6544 Byte
Status
AC
Exec Time
348 ms
Memory
9124 KiB
Compile Error
./Main.cpp:120:20: warning: misleading indentation; statement is not part of the previous 'for' [-Wmisleading-indentation]
rs[i]=a[i];return rs;
^
./Main.cpp:119:21: note: previous statement is here
NTT(a,l,-1);for(int i=0;i<=n+m;i++)
^
./Main.cpp:263:13: warning: misleading indentation; statement is not part of the previous 'while' [-Wmisleading-indentation]
i++;st.insert((pii){j,i});
^
./Main.cpp:262:17: note: previous statement is here
int j=i;while(i+1<=n&&a[i+1]==0)
^
./Main.cpp:40:11: warning: unused variable 'i2' [-Wunused-const-variable]
const int i2=(p+1)/2;
^
./Main.cpp:65:19: warning: unused variable 'ig' [-Wunused-const-variable]
const int g=3,ig=(p+1)/g;
^
./Main.cpp:198:12: warning: unused variable 'ksm' [-Wunused-const-variable]
const auto ksm=qpow<p>;
^
5 warnings generated.
Judge Result
Set Name
Sample
All
Score / Max Score
0 / 0
800 / 800
Status
Set Name
Test Cases
Sample
sample_1.txt, sample_2.txt
All
1_1.txt, 1_10.txt, 1_2.txt, 1_3.txt, 1_4.txt, 1_5.txt, 1_6.txt, 1_7.txt, 1_8.txt, 1_9.txt, 2_1.txt, 2_10.txt, 2_11.txt, 2_12.txt, 2_13.txt, 2_2.txt, 2_3.txt, 2_4.txt, 2_5.txt, 2_6.txt, 2_7.txt, 2_8.txt, 2_9.txt, 3_1.txt, 3_2.txt, 3_3.txt, 3_4.txt, 3_5.txt, 3_6.txt, 4_1.txt, 4_2.txt, 4_3.txt, 4_4.txt, 5_1.txt, 5_2.txt, 5_3.txt, 5_4.txt, 5_5.txt, 6_2.txt, 6_3.txt, 6_4.txt, 6_5.txt, 6_6.txt, 6_7.txt, 6_8.txt, 6_9.txt, 7_1.txt, 7_2.txt, 7_3.txt, sample_1.txt, sample_2.txt
Case Name
Status
Exec Time
Memory
1_1.txt
AC
184 ms
5768 KiB
1_10.txt
AC
188 ms
4312 KiB
1_2.txt
AC
174 ms
5024 KiB
1_3.txt
AC
69 ms
6044 KiB
1_4.txt
AC
107 ms
7080 KiB
1_5.txt
AC
70 ms
4336 KiB
1_6.txt
AC
218 ms
7620 KiB
1_7.txt
AC
100 ms
5472 KiB
1_8.txt
AC
11 ms
5984 KiB
1_9.txt
AC
207 ms
4872 KiB
2_1.txt
AC
40 ms
3672 KiB
2_10.txt
AC
38 ms
3644 KiB
2_11.txt
AC
156 ms
7860 KiB
2_12.txt
AC
52 ms
7952 KiB
2_13.txt
AC
178 ms
7876 KiB
2_2.txt
AC
31 ms
3612 KiB
2_3.txt
AC
37 ms
3656 KiB
2_4.txt
AC
63 ms
3656 KiB
2_5.txt
AC
40 ms
3592 KiB
2_6.txt
AC
61 ms
3564 KiB
2_7.txt
AC
15 ms
3612 KiB
2_8.txt
AC
66 ms
3612 KiB
2_9.txt
AC
38 ms
3740 KiB
3_1.txt
AC
9 ms
6044 KiB
3_2.txt
AC
15 ms
7492 KiB
3_3.txt
AC
4 ms
4588 KiB
3_4.txt
AC
233 ms
6184 KiB
3_5.txt
AC
196 ms
4272 KiB
3_6.txt
AC
235 ms
6284 KiB
4_1.txt
AC
250 ms
7960 KiB
4_2.txt
AC
258 ms
7960 KiB
4_3.txt
AC
248 ms
7936 KiB
4_4.txt
AC
256 ms
7860 KiB
5_1.txt
AC
104 ms
4820 KiB
5_2.txt
AC
104 ms
4812 KiB
5_3.txt
AC
103 ms
4828 KiB
5_4.txt
AC
104 ms
4828 KiB
5_5.txt
AC
102 ms
4804 KiB
6_2.txt
AC
98 ms
4416 KiB
6_3.txt
AC
109 ms
4440 KiB
6_4.txt
AC
116 ms
4452 KiB
6_5.txt
AC
143 ms
4440 KiB
6_6.txt
AC
57 ms
4448 KiB
6_7.txt
AC
57 ms
4352 KiB
6_8.txt
AC
60 ms
4536 KiB
6_9.txt
AC
69 ms
4372 KiB
7_1.txt
AC
291 ms
9124 KiB
7_2.txt
AC
348 ms
9076 KiB
7_3.txt
AC
314 ms
9096 KiB
sample_1.txt
AC
1 ms
3648 KiB
sample_2.txt
AC
1 ms
3584 KiB