제출 #124695

#제출 시각아이디문제언어결과실행 시간메모리
124695MvCTwo Antennas (JOI19_antennas)C++11
13 / 100
3038 ms22380 KiB
#pragma GCC target("avx2") #pragma GCC optimization("O3") #pragma GCC optimization("unroll-loops") #include<bits/stdc++.h> //#include "rail.h" #define rc(x) return cout<<x<<endl,0 #define pb push_back #define mkp make_pair #define in insert #define er erase #define fd find #define fr first #define sc second typedef long long ll; typedef long double ld; const ll INF=0x3f3f3f3f3f3f3f3f; const ll llinf=(1LL<<62); const int inf=(1<<30); const int nmax=2e5+50; const int mod=1e9+7; using namespace std; int n,i,j,rs[nmax],h[nmax],a[nmax],b[nmax],q,mx[nmax],x,l[nmax],r[nmax],t,c[nmax],mn; vector<int>ad[nmax],re[nmax],qr[nmax]; pair<int,int>p,st[4*nmax]; pair<int,int> merge(pair<int,int>x,pair<int,int>y) { return mkp(max(x.fr,y.fr),min(x.sc,y.sc)); } void upd(int x,int l,int r,int p,int v) { if(l>r)return; if(l==r) { if(v==-1)st[x]=mkp(0,inf); else st[x]=mkp(v,v); return; } int mid=(l+r)/2; if(p<=mid)upd(2*x,l,mid,p,v); else upd(2*x+1,mid+1,r,p,v); st[x]=merge(st[2*x],st[2*x+1]); } pair<int,int> qry(int x,int l,int r,int tl,int tr) { if(tl>r || tr<l)return mkp(0,inf); if(tl<=l && r<=tr)return st[x]; int mid=(l+r)/2; return merge(qry(2*x,l,mid,tl,tr),qry(2*x+1,mid+1,r,tl,tr)); } int main() { //freopen("sol.in","r",stdin); //freopen("sol.out","w",stdout); //mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); ios_base::sync_with_stdio(false);cin.tie(0);cerr.tie(0);cout.tie(0); cin>>n; for(i=1;i<=n;i++) { cin>>h[i]>>a[i]>>b[i]; ad[min(n+1,i+a[i])].pb(i); re[min(n+1,i+b[i]+1)].pb(i); } cin>>q; for(i=1;i<=q;i++) { cin>>l[i]>>r[i]; qr[r[i]].pb(i); rs[i]=-1; } //for(i=1;i<=4*n;i++)st[i]=mkp(0,inf); for(i=1;i<=n;i++) { mx[i]=-1; c[i]=-1; } for(i=1;i<=n;i++) { /*for(j=0;j<ad[i].size();j++) { upd(1,1,n,ad[i][j],h[ad[i][j]]); } for(j=0;j<re[i].size();j++) { upd(1,1,n,re[i][j],-1); } if(i-a[i]>=1) { p=qry(1,1,n,max(i-b[i],1),max(i-a[i],1)); if(!p.fr && p.sc==inf)continue; rs=max(rs,abs(p.fr-h[i])); rs=max(rs,abs(p.sc-h[i])); }*/ for(j=0;j<ad[i].size();j++) { c[ad[i][j]]=h[ad[i][j]]; } for(j=0;j<re[i].size();j++) { //mx[re[i][j]]=-1; c[re[i][j]]=-1; } if(i-a[i]>=1) { for(j=max(i-b[i],1);j<=max(i-a[i],1);j++) { if(c[j]==-1) { //dmn[j]=dmx[j]=-1; continue; } mx[j]=max(mx[j],abs(c[j]-h[i])); } } for(j=0;j<qr[i].size();j++) { x=l[qr[i][j]]; mn=-1; for(t=x;t<=i;t++) { if(mx[t]!=-1)mn=max(mn,mx[t]); } rs[qr[i][j]]=mn; } } for(i=1;i<=q;i++)cout<<rs[i]<<'\n'; return 0; }

컴파일 시 표준 에러 (stderr) 메시지

antennas.cpp:2:0: warning: ignoring #pragma GCC optimization [-Wunknown-pragmas]
 #pragma GCC optimization("O3")
 
antennas.cpp:3:0: warning: ignoring #pragma GCC optimization [-Wunknown-pragmas]
 #pragma GCC optimization("unroll-loops")
 
antennas.cpp: In function 'int main()':
antennas.cpp:93:12: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(j=0;j<ad[i].size();j++)
           ~^~~~~~~~~~~~~
antennas.cpp:97:12: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(j=0;j<re[i].size();j++)
           ~^~~~~~~~~~~~~
antennas.cpp:114:12: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(j=0;j<qr[i].size();j++)
           ~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...