RE求助
查看原帖
RE求助
614785
liuye11楼主2022/1/24 16:23
#include<bits/stdc++.h>
#define maxn 10000

using namespace std;
const string w[7]= { "BangZhu", "FuBangZhu", "HuFa", "ZhangLao", "TangZhu", "JingYing", "BangZhong" };
class player {
	public:
		string name,zhiwei;
		unsigned long long banggong=0;
		int dengji,paiming;
};
int n=0,deng,paiming,count=1,playernum,newzhiwei;
unsigned long long bang;
string name,zhi;
priority_queue<unsigned long long,vector<unsigned long long>,less<unsigned long long>> banggongque;
priority_queue<int,vector<int>,less<int>> dengjique;
vector<int> finallist;
vector<int>::iterator finallistit;
vector<int> banggonglist;
vector<int> dengjilist;
multimap<unsigned long long,int>findplafrombanggong;
multimap<unsigned long long,int>::iterator banggongit;
multimap<int,int>findplafromdengji;
multimap<int,int>dengjiit;



player pla[maxn];
int newzhi(int x) {
	int ans=0;
	if(x<=4) {
		ans=2;
	} else if(x<=8) {
		ans=3;
	} else if(x<=15) {
		ans=4;
	} else if(x<=40) {
		ans=5;
	} else {
		ans=6;
	}
	return ans;
}
void caozuo() {
	for(vector<int>::iterator it=finallist.begin(); it!=finallist.end(); it++) {
		int deng1,cou=1;
		const int x=finallist.size();
		deng1=pla[*it].dengji;
		vector<int>::iterator it2;
		vector<int>::iterator it3;
		it3=it;
		it2=finallist.end();
		it2--;
		if(deng>deng1) {
			finallist.insert(it,playernum);
			break;
		} else if(deng==deng1) {
biaoji:
			if(paiming<pla[*it3].paiming) {
				finallist.insert(it,playernum);
				break;
			} else {
				it3++;
				goto biaoji;
			}
		} else {
//					cout<<x<<endl;
			if(cou==x) {
				finallist.push_back(playernum);
				break;
			}
		}
		cou++;
	}

}
int main() {
	cin>>n;
	for(int i=0; i<n; i++) {
		cin>>name>>zhi>>bang>>deng;
		pla[i].name=name;
		pla[i].zhiwei=zhi;
		pla[i].banggong=bang;
		pla[i].dengji=deng;
		pla[i].paiming=i;
		if(i>=3) {
			findplafrombanggong.insert(pair<unsigned long long,int>(bang,i));
			banggongque.push(bang);
		}
	}
	for(int i=0; i<3; i++) {
		name=pla[i].name;
		zhi=pla[i].zhiwei;
		bang=pla[i].banggong;
		deng=pla[i].dengji;
		cout<<name<<" "<<zhi<<" "<<deng<<endl;
	}


	for(int i=3; i<n; i++) {
		bang=banggongque.top();
		banggongit=findplafrombanggong.find(bang);
		playernum=banggongit->second;
		deng=pla[playernum].dengji;
		paiming=pla[playernum].paiming;
		newzhiwei=newzhi(i);
		pla[playernum].zhiwei=w[newzhiwei];
		if(finallist.empty()) {
			finallist.push_back(playernum);
		} else {
			caozuo();
		}
		if(i==4 or i==8 or i==15 or i==40 or i==n-1) {
			for(vector<int>::iterator it=finallist.begin(); it!=finallist.end(); it++) {
				name=pla[*it].name;
				zhi=pla[*it].zhiwei;
				deng=pla[*it].dengji;
				cout<<name<<" "<<zhi<<" "<<deng<<endl;
			}
			finallist.clear();
		}
		findplafrombanggong.erase(banggongit);
		banggongque.pop();
	}
	return 0;
}
2022/1/24 16:23
加载中...