求 hack 数据
查看原帖
求 hack 数据
250609
_pwl楼主2020/12/4 16:58

Rt{\tt Rt},对自己写的代码没(很)有自信,求 hack

#include<iostream>
#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;
const int Maxm=5010;
struct Information{
	int up;	//单价
	int sum;	//牛奶量	
}a[Maxm];
inline void read(int &x){
	int f=1;
	char ch=getchar();
	x=0;
	while(ch<'0'||ch>'9'){
		if(ch=='-') f=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9'){
		x=(x<<3)+(x<<1)+(ch&15);
		ch=getchar();
	}
	x*=f;
}
inline void write(int x){
	if(x<0) putchar('-'),x=-x;
	if(x>9) write(x/10);
	putchar(x%10+'0');
}
inline int min(int a,int b){return a<b?a:b;}
inline int max(int a,int b){return a>b?a:b;}
inline bool cmp(Information p,Information q){return p.up<q.up;}
signed main(){
	//freopen("read.txt","r",stdin);
	int res=0;	//当前价格 
	int cnt=0;	//当前牛奶总量 
	int n,m;
	read(n);read(m);
	for(int i=1;i<=m;i++) read(a[i].up),read(a[i].sum);
	sort(a+1,a+m+1,cmp);
	//for(int i=1;i<=m;i++) printf("%d %d\n",a[i].up,a[i].sum);
	//putchar('\n');
	if(m==1){
		if(a[1].sum<n){
			printf("0");
			return 0;
		} 
		else{
			write(a[1].up*n);
			return 0;
		}
	}
	for(int i=1;i<=m;i++){
		if(cnt>=n){
			write(res);
			return 0;
		}
		else if(n-cnt<a[i].sum){
			res=res+(n-cnt)*a[i].up;
			cnt+=(n-cnt);
			//printf("%d %d\n",cnt,res);
		}
		else{
			res=res+a[i].up*a[i].sum;
			cnt+=a[i].sum;
			//printf("%d %d\n",cnt,res);
		}
	}
	printf("0");
	return 0;
}
2020/12/4 16:58
加载中...