제출 #673771

#제출 시각아이디문제언어결과실행 시간메모리
673771vjudge1새로운 문제 (POI11_met)C++14
74 / 100
193 ms65536 KiB
#include<stdio.h> #include<vector> #define N 300001 using namespace std; inline char nc() { static char buf[99999],*l,*r; return l==r&&(r=(l=buf)+fread(buf,1,99999,stdin),l==r)?EOF:*l++; } inline void read(int&x) { char c=nc();for(;c<'0'||'9'<c;c=nc()); for(x=0;'0'<=c&&c<='9';x=(x<<3)+(x<<1)+(c^48),c=nc()); } struct node{int data,l,r;}tre[N*60]; int n,m,q,sz,p[N],rt[N];vector<int>e[N]; inline void make(int&i,const int&l,const int&r,const int&ql, const int&qr,const int&a) { if(qr<l||r<ql)return; tre[++sz]=tre[i];i=sz; if(ql<=l&&r<=qr)tre[i].data+=a; else { int mid=l+r>>1; make(tre[i].l,l,mid,ql,qr,a); make(tre[i].r,mid+1,r,ql,qr,a); } } inline void query(int i,int l,int r,const int&q,long long&wr) { for(;i;) { wr+=tre[i].data; if(l==r)break; int mid=l+r>>1; if(q<=mid)r=mid,i=tre[i].l; else l=mid+1,i=tre[i].r; } } main() { read(n);read(m); for(int i=0,x;i<m;read(x),e[--x].push_back(i++)); for(int i=0;i<n;read(p[i++])); read(q); for(int i=1,l,r,a;i<=q;++i) { read(l);read(r);read(a);--l;--r; if(l<=r)make(rt[i]=rt[i-1],0,m-1,l,r,a); else make(rt[i]=rt[i-1],0,m-1,r+1,l-1,-a),tre[rt[i]].data+=a; } for(int i=0,l,r,mid;i<n;++i) { l=1;r=q; for(long long sum;l<=r;) { mid=l+r>>1;sum=0; for(int j=0;j<e[i].size()&&sum<p[i];++j) query(rt[mid],0,m-1,e[i][j],sum); if(sum>=p[i])r=mid-1; else l=mid+1; } if(l>q)printf("NIE\n"); else printf("%d\n",l); } }

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

met.cpp: In function 'void make(int&, const int&, const int&, const int&, const int&, const int&)':
met.cpp:25:12: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   25 |   int mid=l+r>>1;
      |           ~^~
met.cpp: In function 'void query(int, int, int, const int&, long long int&)':
met.cpp:36:12: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   36 |   int mid=l+r>>1;
      |           ~^~
met.cpp: At global scope:
met.cpp:41:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   41 | main()
      | ^~~~
met.cpp: In function 'int main()':
met.cpp:58:9: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   58 |    mid=l+r>>1;sum=0;
      |        ~^~
met.cpp:59:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   59 |    for(int j=0;j<e[i].size()&&sum<p[i];++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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...