# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1023314 | 2024-07-14T15:32:18 Z | Vanio | Segments (IZhO18_segments) | C++17 | 457 ms | 6448 KB |
#include<bits/stdc++.h> using namespace std; struct segment{ int l,r; }; segment seg[200001]; bool fff(segment p, segment q){ return p.r-p.l>q.r-q.l; } struct block{ int mi=INT_MAX,ma=-1; vector<int> vl,vr; }; block b[501]; struct query{ int l,r,k; }; query qs[200001]; int n,m,t,nextSegmentId,lastans,bsz; set<int> segmentIds; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int i,qt,l,r,id,k,f=0; cin>>n>>t; for(i=1;i<=n;i++){ cin>>qt; if(qt==1){ cin>>seg[i].l>>seg[i].r; if(seg[i].l>seg[i].r) swap(seg[i].l,seg[i].r); } else{ if(f==0){ m=i-1; f=1; } cin>>qs[i].l>>qs[i].r>>qs[i].k; if(qs[i].l>qs[i].r) swap(qs[i].l,qs[i].r); } } sort(seg+1,seg+1+m,fff); bsz=sqrt(m); if(bsz*bsz<m) bsz++; int bindx; for(i=1;i<=m;i++){ bindx=(i-1)/bsz; b[bindx].mi=min(b[bindx].mi,seg[i].r-seg[i].l+1); b[bindx].ma=max(b[bindx].ma,seg[i].r-seg[i].l+1); b[bindx].vl.push_back(seg[i].l); b[bindx].vr.push_back(seg[i].r); } for(i=0;i<bsz;i++){ sort(b[i].vl.begin(),b[i].vl.end()); sort(b[i].vr.begin(),b[i].vr.end()); } int ans,j,g; for(i=m+1;i<=n;i++){ ans=m; qs[i].l^=lastans*t; qs[i].r^=lastans*t; if(qs[i].l>qs[i].r) swap(qs[i].l,qs[i].r); for(j=0;j<bsz;j++){ if(b[j].mi>=qs[i].k-1){ auto it = lower_bound(b[j].vl.begin(),b[j].vl.end(),qs[i].r-qs[i].k+2); ans-=b[j].vl.end()-it; auto it2 = upper_bound(b[j].vr.begin(),b[j].vr.end(),qs[i].l+qs[i].k-2); ans-=it2-b[j].vr.begin(); } else if(b[j].mi<qs[i].k-1 && qs[i].k-1<=b[j].ma){ for(g=j*bsz+1;g<=(j+1)*bsz;g++){ if(seg[g].r-seg[g].l+1<qs[i].k || seg[g].l>=qs[i].r-qs[i].k+2 || seg[g].r<=qs[i].l+qs[i].k-2) ans--; } } else{ ans-=m-bsz*j; break; } } lastans=ans; cout<<ans<<'\n'; } return 0; } /* 6 1 1 1 2 1 3 8 1 5 8 1 2 4 1 8 10 3 3 7 2 */
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 0 ms | 348 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 457 ms | 6448 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 21 ms | 5212 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 22 ms | 5464 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 0 ms | 348 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 0 ms | 348 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |