QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#687641#9528. New Energy VehicleFyeausCompile Error//C++172.4kb2024-10-29 20:11:262024-10-29 20:11:28

Judging History

This is the latest submission verdict.

  • [2024-10-29 20:11:28]
  • Judged
  • [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>);
      |                                            ^