QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#687641 | #9528. New Energy Vehicle | Fyeaus | Compile Error | / | / | C++17 | 2.4kb | 2024-10-29 20:11:26 | 2024-10-29 20:11:28 |
Judging History
This is the latest submission verdict.
- [2024-10-29 20:11:28]
- Judged
- Verdict: Compile Error
- Time: 0ms
- Memory: 0kb
- [2024-10-29 20:11:26]
- Submitted
answer
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,f[1000005];
int b[1000005];
struct node
{
int x,y;
}t[1000005];
int cmp(node a,node b)
{
return a.x<b.x;
}
inline int read()
{
int x=0,f=1;
char v=getchar();
while(!isdigit(v))
{
if(v=='-')
f=-1;
v=getchar();
}
while(isdigit(v))
{
x=x*10+v-'0';
v=getchar();
}
return x*f;
}
signed main()
{
int T;
cin>>T;
while(T--)
{
int tot[100005]={0};
int ans=0;
vector v(100005,vector<int>);
priority_queue<pair<int,int> >q;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>f[i];
b[i]=f[i];
}
for(int i=1;i<=m;i++)
{
cin>>t[i].x>>t[i].y;
}
int sum=0;
sort(t+1,t+m+1,cmp);
for(int i=1;i<=m;i++)
{
if(!tot[t[i].y])
{
q.push(make_pair(-t[i].x,t[i].y));
tot[t[i].y]=1;//下一个应该放的
}
v[t[i].y].push_back(t[i].x);
}
for(int i=1;i<=n;i++)
{
if(tot[i]==0)
sum+=f[i];
}
// cout<<sum<<endl;
int now=0;//当前位置
for(int i=1;i<=m;i++)
{
int xx=0;//从pq中拿出的距离
while(q.size()&&xx<t[i].x-now)
{
// cout<<i<<" "<<1<<endl;
int numx=-q.top().first,numy=q.top().second;
q.pop();
if(t[i].x>numx)
{
if(tot[numy]==v[numy].size())
{
sum+=b[numy];
continue;
}
else
{
q.push(make_pair(v[numy][tot[numy]],numy));
tot[numy]++;
continue;
}
}
if(xx+b[numy]>t[i].x-now)
{
// cout<<1<<endl;
b[numy]-=t[i].x-now-xx;
q.push(make_pair(-numx,numy));
xx=t[i].x-now;
break;
}
else
{
xx+=b[numy];
b[numy]=0;
}
}
// cout<<i<<" "<<xx<<" "<<t[i].x<<" "<<endl;
// cout<<sum<<" "<<xx<<endl;
if(xx<t[i].x-now)
{
if(sum+xx>=t[i].x-now)
{
// cout<<1;
sum-=t[i].x-now-xx;
now=t[i].x;
// ans=t[i].x;
}
else
{
// cout<<1<<endl;
ans=now+xx+sum;
break;
}
}
else
{
now=t[i].x;
}
if(i==m)
ans=now+sum+f[t[i].y];
b[t[i].y]=f[t[i].y];
if(q.size()&&-q.top().first==t[i].x)
q.pop();
if(tot[t[i].y]!=v[t[i].y].size())
{
q.push(make_pair(-v[t[i].y][tot[t[i].y]],t[i].y));
}
else
{
sum+=f[t[i].y];
}
}
cout<<ans<<endl;
}
return 0;
}
/*
1
3 3
2 2 2
6 1
7 2
8 3
*/
詳細信息
answer.code: In function ‘int main()’: answer.code:39:44: error: expected primary-expression before ‘)’ token 39 | vector v(100005,vector<int>); | ^