Homework Introduction
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int a[10005],b[10005],c[10005];
int n,m;
priority_queue<int>q;
int f(int x,int i)
{
return a[i]*x*x+b[i]*x+c[i];
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i]>>b[i]>>c[i];
}
for(int i=1;i<=n;i++){
int x = -b[i]/(2*a[i]);
for(int j=x;j>=1;j--){
if(q.size()<m){
q.push(f(j,i));
}
else{
if(f(j,i)<q.top()){
q.pop();
q.push(f(j,i));
}
else{
break;
}
}
}
for(int j=max(x,1);;j++){
if(q.size()<m){
q.push(f(j,i));
}
else{
if(f(j,i)<q.top()){
q.pop();
q.push(f(j,i));
}
else break;
}
}
}
vector<int>ans;
while(!q.empty()){
ans.push_back(q.top());
q.pop();
}
for(int i=ans.size()-1;i>=0;i--){
cout<<ans[i]<<' ';
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;
#define int long long
struct node{
int id,arrtime,time,level;
friend bool operator < (node a,node b){
if(a.level!=b.level)return a.level<b.level;
else return a.arrtime>b.arrtime;
}
}a[1500005];
int book[1500005];
signed main()
{
int cnt=0,id,arrtime,time,level;
while(cin>>id>>arrtime>>time>>level){
a[++cnt] = {id,arrtime,time,level};
}
int now = 0,st=0;//lst任务开始的时间,lst任务结束的时间
node lst={0,0,0,0};
priority_queue<node>q;
for(int i=1;i<=cnt;i++){
if(a[i].arrtime>=now){
if(lst.id!=0)cout<<lst.id<<" "<<now<<endl;
if(q.empty()){
lst = a[i];
now = a[i].arrtime+a[i].time;
st = a[i].arrtime;
continue;
}
lst = q.top();
q.pop();
st = now;
now = st+lst.time-book[lst.id];
i--;
}
else{
if(a[i].level>lst.level){
q.push(lst);
book[lst.id]+=a[i].arrtime-st;
lst = a[i];
now = a[i].arrtime+a[i].time;
st = a[i].arrtime;
}
else{
q.push(a[i]);
}
}
}
cout<<lst.id<<" "<<now<<endl;
while(!q.empty()){
cout<<q.top().id<<" "<<now+q.top().time-book[q.top().id]<<endl;
now += q.top().time-book[q.top().id];
q.pop();
}
return 0;
}
Problem
Please claim the assignment to see the problems.
- Status
- Live...
- Problem
- 13
- Open Since
- 2025-11-10 0:00
- Deadline
- 2026-1-31 23:59
- Extension
- 24 hour(s)