4 solutions
-
0
#include<bits/stdc++.h> using namespace std; typedef long long LL; // #define x first // #define y second const int N=2e5+10; int n,m; int s[N];//每台计算机的算力 // typedef pair<int,int> PII;//<结束时刻,算力> // priority_queue<PII,vector<PII>,greater<PII> > q[N];//每台计算机任务 //greater 升序,小根堆;less 降序,大根堆 struct PII{ int x,y; bool operator>(const PII &s) const{ if(x>s.x || (x==s.x&&y>s.y)) return true; else return false; } }; priority_queue<PII,vector<PII>,greater<PII> > q[N]; int main(){ cin>>n>>m; for(int i=1;i<=n;i++) cin>>s[i]; for(int i=1;i<=m;i++){ int a,b,c,d; cin>>a>>b>>c>>d; while(q[b].size() && q[b].top().x <=a){ s[b] += q[b].top().y; q[b].pop(); } if(s[b]<d) cout<<"-1"; else{ q[b].push({a+c,d});//a+c:开始时刻+持续时间->结束时间 s[b]-=d; cout<<s[b]; } cout<<endl; } }
Information
- ID
- 1548
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 4
- Tags
- # Submissions
- 188
- Accepted
- 37
- Uploaded By