CF#24-B - F1 Champions

来源:互联网 发布:淘宝摇一摇在哪 编辑:程序博客网 时间:2024/06/05 17:00

http://codeforces.com/problemset/problem/24/B

模拟题。。。直接用set模拟即可

无坑点。。


错误的地方。。。 写映射函数一定要注意每条路径都要return,有些没说明的,可能隐含意思是return 0,否则如果没有return 默认返回随机值,导致WA.


#include <cstdio>#include <cmath>#include <cstring>#include <string>#include <algorithm>#include <iostream>#include <queue>#include <map>#include <set>#include <vector>#include<stack>using namespace std;  const double pi=acos(-1.0);const double eps=1e-6;struct node{string name;int level[55];int point;node(){name="";point=0;memset(level,0,sizeof(level));}bool operator <(const node &b) const{if (point!=b.point)return point<b.point;int i;for (i=1;i<=50;i++){if (level[i]==b.level[i])continue;return  (level[i]<b.level[i]);}} node(const node& b){name=b.name;point=b.point;for (int i=0;i<=50;i++)level[i]=b.level[i];}};struct cmp{bool operator()(const node&a,const node&b)const{if (a.level[1]!=b.level[1])return a.level[1]<b.level[1] ;if (a.point!=b.point)return a.point<b.point;int i;for (i=2;i<=50;i++){if (a.level[i]==b.level[i])continue;return  (a.level[i]<b.level[i]);}}};set<node> sb;set<node,cmp> sb_p;set<node,cmp>::iterator it_p;set<node>::iterator it;int get(int i){if (i==1) return 25;if (i==2) return 18;if (i==3) return 15;if (i==4) return 12;if (i==5) return 10;if (i==6) return 8;if (i==7) return 6;if (i==8) return 4;if (i==9) return 2;if (i==10) return 1;if (i>10) return 0;}set<node>::iterator  myfind1 (node&b){set<node>::iterator tt;for (tt=sb.begin();tt!=sb.end();tt++){if ((*tt).name==b.name) return tt;}return sb.end();}set<node,cmp>::iterator  myfind2 (node&b){set <node,cmp>::iterator tt;for (tt=sb_p.begin();tt!=sb_p.end();tt++){if ((*tt).name==b.name) return tt;}return sb_p.end();}int main(){ int t;cin>>t;while(t--){int n;cin>>n;getchar();string ss;int i;for (i=1;i<=n;i++){cin>>ss;node tmp;tmp.name=ss;it=myfind1(tmp);if (it!=sb.end()){tmp=*it;sb.erase(it);}tmp.level[i]++;tmp.point+=get(i);sb.insert(tmp);node tt;tt.name=ss;it_p=myfind2(tt);if (it_p!=sb_p.end()){tt=*it_p;sb_p.erase(it_p);}tt.point+=get(i);tt.level[i]++;sb_p.insert(tt);}}it=sb.end();if (it!=sb.begin()) it--;cout<<(it->name)<<endl;  it_p=sb_p.end(); if (it_p!=sb_p.begin()) it_p--;cout<<(it_p->name)<<endl;return 0;}


0 0