为什么只拿得到十分???求大佬指点
  • 板块P2073 送花
  • 楼主zengyiyu0139
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/10/8 20:12
  • 上次更新2024/10/8 21:59:13
查看原帖
为什么只拿得到十分???求大佬指点
1438802
zengyiyu0139楼主2024/10/8 20:12
#include<bits/stdc++.h> 
using namespace std;

struct flower{
	int w = 0,c = 0;
}flo[10001],maxn,minn;

bool srch(int num,int c){
	while(num){
		if(flo[num].c == c)return false;
		num--;
	}
	return true;
}

void bs1(int &num,int w,int c){
	if(srch(num,c)){
		num++;
		flo[num].w = w;
		flo[num].c = c;
		if(flo[num].c >= maxn.c){
			maxn.c = c;
			maxn.w = w;
		}
		if(flo[num].c <= minn.c){
			minn.w = w;
			minn.c = c;
		}
		return;
	}else return;
}

void bs2(int &num){
	if(num == 0)return;
	int i;
	for(i = 1;i <= num;i++){
		if(flo[i].c == maxn.c){
			for(int j = i;j < num;j++){
				flo[j].c = flo[j + 1].c;
				flo[j].w = flo[j + 1].w;
			}
			flo[num].c = 0;
			flo[num].w = 0;
			num--;
			break;
		}
	}
	return;
}

void bs3(int &num){
	if(num == 0)return;
	int i;
	for(i = 1;i <= num;i++){
		if(flo[i].c == minn.c){
			for(int j = i;j < num;j++){
				flo[j].c = flo[j + 1].c;
				flo[j].w = flo[j + 1].w;
			}
			flo[num].c = 0;
			flo[num].w = 0;
			num--;
			break;
		}
	}
	return;
}

int main(){
	int ans = 0,w,c,num = 0,pay = 0;
	int n = 0;
	cin >> n;
	minn.c = 1000000;
	while(n != -1){
		switch(n){
			case 1 : cin >> w >> c; bs1(num,w,c);
			case 2 : bs2(num);
			default : bs3(num);
		}
		cin >> n;
	}
	for(int i = 1;i <= num;i++){
		ans += flo[i].w;
		pay += flo[i].c;
	}
	cout << ans << " " << pay << endl;
	return 0;
}
2024/10/8 20:12
加载中...