排队打水
给 N个人,M个水管,问第N+1个人等多久才能打水。
思路:
我偷懒用了单调队列。 用的不太熟,稍微调了一会。
#include<iostream> #include<cstdio> #include<queue> #include<vector> #include<algorithm> #include<cstring> using namespace std; int n,m; int a[100009]; priority_queue<long long >q; long long x; int main() { freopen("death.in","r",stdin); freopen("death.out","w",stdout); scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1;i<=m;i++) q.push(-a[i]); for(int i=m+1;i<=n;i++) { x=q.top();q.pop(); x-=1LL*a[i]; q.push(x); } cout<<-q.top(); return 0; }