Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
27915 | yuanjiabao | 【BJ】T2 | C++ | 运行超时 | 20 | 1000 MS | 444 KB | 1083 | 2024-03-31 14:12:32 |
#include<iostream> using namespace std; const int N=50100,inf=0x3f3f3f3f,LG=31; int n,q; int a[N]; void init(){ cin>>n>>q; for(int i=1;i<=n;i++)cin>>a[i]; } int cnt[LG]; inline bool cmp(int k){ for(int i=LG-1;i>=0;i--){ if(cnt[i]&&!((k>>i)&1))return true; else if(!cnt[i]&&((k>>i)&1))return false; } return true; } inline void del(int x){for(int i=0;i<LG;i++)if((x>>i)&1)cnt[i]--;} inline void add(int x){for(int i=0;i<LG;i++)if((x>>i)&1)cnt[i]++;} signed main(){ // freopen("beaco.in","r",stdin); // freopen("beaco.out","w",stdout); init(); while(q--){ int opt;cin>>opt; if(opt==1){int x,y;cin>>x>>y;a[x]=y;} else { int k;cin>>k; int ans=inf; int r=1; for (int i=1;i<=n;i++){ while(r<=n&&!cmp(k))add(a[r++]); if(cmp(k))ans=min(ans,r-i); del(a[i]); } if(ans==inf)printf("-1\n"); else printf("%d\n",ans); } } return 0; }