我为什么只拿了36分?检查也没查出来,开大了数组,还开了longlong
查看原帖
我为什么只拿了36分?检查也没查出来,开大了数组,还开了longlong
1073342
Genshin_ZFYX楼主2023/10/14 17:05

#1#2#4AC,其他都是WA代码:

#include<bits/stdc++.h>
using namespace std;
int p[2000001],a[2000001];
int main()
{
    long long n,m,sum=0,sum1=0;cin>>m>>n;
    for(int i=1;i<=n;i++)cin>>p[i]>>a[i];
    for(int i=1;i<n;i++)
    {
    	int maxl=i;
    	for(int j=i+1;j<=n;j++)
    	{
    		if(p[j]<p[maxl])maxl=j;
    	}
    	swap(a[i],a[maxl]);
    	swap(p[i],p[maxl]);
    }
    for(int i=1;i<=n;i++)
    {
    	if(sum1+a[i]>=m)//如果改成>m,#4就会错,但#3AC
    	{
    		sum+=(sum1+a[i]-m)*p[i];break;
    	}
    	else {sum+=a[i]*p[i];sum1+=a[i];}
    }
    cout<<sum;
    return 0;
}
2023/10/14 17:05
加载中...