제출 #908750

#제출 시각아이디문제언어결과실행 시간메모리
908750StefanSebezExamination (JOI19_examination)C++14
2 / 100
3084 ms11320 KiB
#include <bits/stdc++.h> using namespace std; #define fi first #define se second #define pb push_back const int N=1e5+50; int nc,root,lc[2*N],rc[2*N]; vector<int>nums[2*N]; void Update(int &c,int ss,int se,int qind,int qval) { if(!c) c=++nc; if(ss==se) { nums[c].clear(); nums[c].pb(qval); return; } int mid=(ss+se)/2; if(qind<=mid) Update(lc[c],ss,mid,qind,qval); else Update(rc[c],mid+1,se,qind,qval); nums[c].clear(); for(int i=0,j=0;i<=nums[lc[c]].size();i++) { if(i==nums[lc[c]].size()) { while(j<nums[rc[c]].size()) { nums[c].pb(nums[rc[c]][j]); j++; } break; } while(j<nums[rc[c]].size() && nums[rc[c]][j]<=nums[lc[c]][i]) { nums[c].pb(nums[rc[c]][j]); j++; } nums[c].pb(nums[lc[c]][i]); } } int Get(int &c,int ss,int se,int qs,int qe,int qval) { if(qs>qe) return 0; if(qs<=ss && se<=qe) { int lb=lower_bound(nums[c].begin(),nums[c].end(),qval)-nums[c].begin(); return nums[c].size()-lb; } else if(qe<ss || se<qs) return 0; int mid=(ss+se)/2; return Get(lc[c],ss,mid,qs,qe,qval)+Get(rc[c],mid+1,se,qs,qe,qval); } int main() { int n,q;scanf("%i%i",&n,&q); pair<int,pair<int,int> >a[n+1]; pair<int,int>b[n+1]; int c[n+1]; for(int i=1;i<=n;i++) { scanf("%i%i",&a[i].se.fi,&a[i].se.se); a[i].fi=a[i].se.fi+a[i].se.se; } sort(a+1,a+n+1); for(int i=1;i<=n;i++) { Update(root,1,n,i,a[i].se.se); b[i]={a[i].se.fi,i}; c[i]=a[i].fi; } sort(b+1,b+n+1); int ind[n+1]; for(int i=1;i<=n;i++) ind[i]=b[i].se; /*for(int i=1;i<=n;i++) printf("%i ",ind[i]); printf("\n");*/ /*for(int i=1;i<=n;i++) printf("%i ",c[i]); printf("\n");*/ pair<pair<int,int>,pair<int,int> > qy[q+1]; for(int i=1;i<=q;i++) { scanf("%i%i%i",&qy[i].fi.fi,&qy[i].fi.se,&qy[i].se.fi); qy[i].se.se=i; } sort(qy+1,qy+q+1); int res[q+1]; for(int i=1,j=1;i<=q;i++) { int X=qy[i].fi.fi,Y=qy[i].fi.se,Z=qy[i].se.fi; while(j<=n && X>a[ind[j]].se.fi) { Update(root,1,n,ind[j],-1); j++; } int lb=lower_bound(c+1,c+n+1,Z)-c; //printf("%i %i\n",lb,Z); int ans=Get(root,1,n,lb,n,Y); //printf("%i %i %i %i %i\n",X,Y,Z,lb,ans); res[qy[i].se.se]=ans; } for(int i=1;i<=q;i++) printf("%i\n",res[i]); return 0; }

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

examination.cpp: In function 'void Update(int&, int, int, int, int)':
examination.cpp:22:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   22 |  for(int i=0,j=0;i<=nums[lc[c]].size();i++)
      |                  ~^~~~~~~~~~~~~~~~~~~~
examination.cpp:24:7: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   24 |   if(i==nums[lc[c]].size())
      |      ~^~~~~~~~~~~~~~~~~~~~
examination.cpp:26:11: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   26 |    while(j<nums[rc[c]].size())
      |          ~^~~~~~~~~~~~~~~~~~~
examination.cpp:33:10: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   33 |   while(j<nums[rc[c]].size() && nums[rc[c]][j]<=nums[lc[c]][i])
      |         ~^~~~~~~~~~~~~~~~~~~
examination.cpp: In function 'int main()':
examination.cpp:55:18: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   55 |     int n,q;scanf("%i%i",&n,&q);
      |             ~~~~~^~~~~~~~~~~~~~
examination.cpp:61:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   61 |   scanf("%i%i",&a[i].se.fi,&a[i].se.se);
      |   ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
examination.cpp:81:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   81 |   scanf("%i%i%i",&qy[i].fi.fi,&qy[i].fi.se,&qy[i].se.fi);
      |   ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...