제출 #126812

#제출 시각아이디문제언어결과실행 시간메모리
126812mohammedehab2002Examination (JOI19_examination)C++11
100 / 100
2765 ms163704 KiB
#include <iostream> #include <algorithm> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #include <map> using namespace std; using namespace __gnu_pbds; map<int,int> comp; pair<int,int> arr[100005]; int x[100005],y[100005],z[100005],p[100005],ans[100005]; bool cmp(int a,int b) { return x[a]>x[b]; } tree<int,null_type,greater_equal<int>,rb_tree_tag,tree_order_statistics_node_update> s[800005]; void update(int node,int st,int en,int idx,int val) { s[node].insert(val); if (st!=en) { int mid=(st+en)/2; if (st<=idx && idx<=mid) update(2*node,st,mid,idx,val); else update(2*node+1,mid+1,en,idx,val); } } int query(int node,int st,int en,int l,int r,int val) { if (en<l || st>r || r<l) return 0; if (l<=st && en<=r) return s[node].order_of_key(val-1); int mid=(st+en)/2; return query(2*node,st,mid,l,r,val)+query(2*node+1,mid+1,en,l,r,val); } int main() { int n,q; scanf("%d%d",&n,&q); for (int i=0;i<n;i++) { scanf("%d%d",&arr[i].first,&arr[i].second); comp[arr[i].second]; } for (int i=0;i<q;i++) { scanf("%d%d%d",&x[i],&y[i],&z[i]); p[i]=i; comp[y[i]]; } int cur=0; for (auto &l:comp) l.second=cur++; sort(p,p+q,cmp); sort(arr,arr+n); int idx=n-1; for (int i=0;i<q;i++) { while (idx>=0 && arr[idx].first>=x[p[i]]) { update(1,0,cur-1,comp[arr[idx].second],arr[idx].first+arr[idx].second); idx--; } ans[p[i]]=query(1,0,cur-1,comp[y[p[i]]],cur-1,z[p[i]]); } for (int i=0;i<q;i++) printf("%d\n",ans[i]); }

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

examination.cpp: In function 'int main()':
examination.cpp:40:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%d",&n,&q);
  ~~~~~^~~~~~~~~~~~~~
examination.cpp:43:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d%d",&arr[i].first,&arr[i].second);
   ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
examination.cpp:48:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d%d%d",&x[i],&y[i],&z[i]);
   ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...