uva 10194 - Football (aka Soccer)
2013-12-31 10:42
741 查看
又是wa,有点搞不懂
#include<iostream> #include<string> #include<vector> #include<algorithm> #include<stdlib.h> #include<stdio.h> using namespace std; typedef struct infoteam{ string name; int games; int point; int win; int tie; int lose; int difference; int score; int against; infoteam(){ games=0; win=0; tie=0; lose=0; score=0; against=0; } void getpoint(){ point=3*win+tie; } void getdifference(){ difference=score-against; } }infoteam; int cmp(const void *f1,const void* f2){ infoteam* a=(infoteam*)f1; infoteam* b=(infoteam*)f2; if(a->point!=b->point) return b->point-a->point; if(a->win!=b->win) return b->win-a->win; if(a->difference!=b->difference) return b->difference-a->difference; if(a->score!=b->score) return b->score-a->score; if(a->games!=b->games) return a->games-b->games; return a->name>b->name; } int main(){ int n; cin>>n; getchar(); vector<string> v_teanname; while(n--){ string s_gamename; getline(cin,s_gamename); int i_teamnum; cin>>i_teamnum; getchar(); infoteam* str_info=new infoteam[i_teamnum]; for(int i=0;i<i_teamnum;i++){ string temp; getline(cin,temp); str_info[i].name=temp; //v_teanname.push_back(temp); } int i_gamenum; cin>>i_gamenum; getchar(); while(i_gamenum--){ string temp; getline(cin,temp); int start,middle,end,ateam,bteam; start=temp.find("#",0); for(int i=0;i<i_teamnum;i++){ if(str_info[i].name==temp.substr(0,start)){ ateam=i; break; } } middle=temp.find("@",0); end=temp.find("#",middle); for(int i=0;i<i_teamnum;i++){ if(str_info[i].name==temp.substr(end+1)){ bteam=i; break; } } int a=atoi(const_cast<char*>(temp.substr(start+1,middle).c_str())); int b=atoi(const_cast<char*>(temp.substr(middle+1,end).c_str())); str_info[ateam].score+=a; str_info[ateam].against+=b; str_info[bteam].score+=b; str_info[bteam].against+=a; str_info[ateam].games+=1; str_info[bteam].games+=1; if(a==b){ str_info[ateam].tie+=1; str_info[bteam].tie+=1; } else{ (a>b)?(str_info[ateam].win+=1,str_info[bteam].lose+=1):(str_info[ateam].lose+=1,str_info[bteam].win+=1); } } for(int i=0;i<i_teamnum;i++){ str_info[i].getdifference(); str_info[i].getpoint(); } qsort(str_info,i_teamnum,sizeof(infoteam),cmp); cout<<s_gamename<<endl; for(int i=0;i<i_teamnum;i++){ cout<<i+1<<") "<<str_info[i].name<<" "<<str_info[i].point<<"p, "<< str_info[i].games<<"g ("<<str_info[i].win<<"-"<<str_info[i].tie<< "-"<<str_info[i].lose<<"), "<<str_info[i].difference<<"gd ("<< str_info[i].score<<"-"<<str_info[i].against<<")"<<endl; } if(n!=0) cout<<endl; delete[] str_info; } //system("pause"); }
相关文章推荐
- UVA 10194 Football (aka Soccer)
- UVa Problem Solution: 10194 - Football (aka Soccer)
- UVA - 10194 Football (aka Soccer)
- UVa:10194 - Football (aka Soccer)
- Uva 10194 Football (aka Soccer)
- UVa10194 Football (aka Soccer)
- uva -- 10194 - Football (aka Soccer)
- UVA 10194 - Football (aka Soccer)
- uva 10194 Football (aka Soccer)
- uva 10194 - Football (aka Soccer)
- UVa 10194 - Football (aka Soccer)
- uva 10194 Football (aka Soccer)
- UVa 10194 - Football (aka Soccer)解题报告
- UVa 10194 - Football (aka Soccer)
- UVA 10194 - Football (aka Soccer)
- uva 10194 - Football (aka Soccer)
- uva 10194 Football (aka Soccer)(字符串处理+sort排序)
- UVA 10194 Football (aka Soccer)
- UVA 10194 - Football (aka Soccer)
- UVa 10194 Football (aka Soccer) (模拟)