求助!样例能过,提交0pts!(玄关
#include<bits/stdc++.h>
using namespace std;
struct person{
double score;
char team;
bool operator<(const person& f)const{
if(score==f.score){
return team<f.team;
}
return score>f.score;
}
};
person fin[10010];
int cnt;
class Team{
private:
double base;
vector<int> give;
vector<bool> use;
public:
vector<person> p;
inline void in(int x){
give.push_back(x);
use.push_back(true);
}
inline void choose(){
for(int i = 0; i<give.size(); i++){
base+=give[i];
}
base /= give.size();
for(int i = 0; i<give.size(); i++){
if(abs(give[i]-base)>15){
use[i] = false;
}
}
base = 0;
int cnt = 0;
for(int i = 0; i<give.size(); i++){
if(use[i]){
base+=give[i];
cnt++;
}
}
base /= cnt;
}
inline void update(){
for(int i = 0; i<p.size(); i++){
p[i].score = round(0.6*p[i].score+0.4*base);
cnt++;
fin[cnt] = p[i];
}
}
};
Team t[30];
int main(){
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int n, k;
cin >> n >> k;
for(int i = 1; i<=n; i++){
int s; char c;
cin >> s >> c;
t[c-'A'+1].p.push_back(person{s,c});
}
for(int i = 1; i<=k; i++){
for(int j = 1; j<=k; j++){
int op;
cin >> op;
t[j].in(op);
}
}
for(int i = 1; i<=k; i++){
t[i].choose();
t[i].update();
}
stable_sort(fin+1,fin+1+cnt);
for(int i = 1; i<=cnt; i++){
cout << fin[i].score << " " << fin[i].team << endl;
}
return 0;
}