Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
469ms。。。看来多组数据,1A注意,一张选票上出现错误的位置,不仅仅是那个错误位置廢掉,而是整张票廢掉 #include <iostream> #include <stdio.h> #include <string> #include <algorithm> using namespace std; int scores[10] = {15,12 ,9 ,7 , 6 ,5 ,4 ,3 ,2 ,1}; int ws(int n){ if(n<10)return 1; if(n<100)return 2; if(n<1000)return 3; if(n<10000)return 4; return 5; } struct teacher{ int id; string name; string major; int votes; int score; int vote[10]; }t[102]; int numT, numS; int ids[102]; void init(){ for(int i = 0; i < 102; i++) ids[i] = -1; for(int i = 1; i <= numT; i++) { t[i].votes = 0; t[i].score = 0; for(int j = 0; j < 10; j++) t[i].vote[j] = 0; } for(int i = 1; i <= numT; i++){ cin >> t[i].id >> t[i].name >> t[i].major; ids[t[i].id] = i; } } bool compare(const teacher& t1, const teacher& t2){ return t1.score>t2.score || (t1.score==t2.score && t1.votes>t2.votes) || (t1.score==t2.score && t1.votes==t2.votes && t1.id<t2.id); } bool isFei(string s){ bool used[102] = {0}; for(int rank = 0; rank < 10; rank++){ int tarId = (s[rank*2]-'0')*10+(s[rank*2+1]-'0'); if(!tarId) continue; int wdbh = ids[tarId]; if(!(~wdbh) || used[wdbh]) return 1; used[wdbh] = 1; } return 0; } void parse(string s){ if(isFei(s)) return; for(int rank = 0; rank < 10; rank++){ int tarId = (s[rank*2]-'0')*10 + (s[rank*2+1]-'0'); if(!tarId) continue; int wdbh = ids[tarId]; t[wdbh].votes++; t[wdbh].vote[rank]++; t[wdbh].score+=scores[rank]; } } int main() { while(1){ cin >> numT; if(!(~numT)) break; cin >> numS; init(); string s; for(int i = 0; i < numS; i++) { cin >> s; parse(s); } sort(t+1, t+numT+1, compare); for(int i = 1; i <= 10; i++){ printf("%d",i); printf(" "); if(i!=10)printf(" "); if(t[i].id<10)printf("0"); printf("%d ",t[i].id); int len = t[i].name.length(); printf("%s", t[i].name.c_str()); for(int j = 0; j < 15-len; j++) printf(" "); len = t[i].major.length(); printf("%s", t[i].major.c_str()); for(int j = 0; j < 37-len; j++) printf(" "); int w = ws(t[i].score); for(int j = 0; j < 6-w; j++)printf(" "); printf("%d",t[i].score); w = ws(t[i].votes); for(int j = 0; j < 6-w; j++) printf(" "); printf("%d",t[i].votes); for(int k = 0; k < 10; k++){ w = ws(t[i].vote[k]); for(int j = 0; j < 6-w; j++) printf(" "); printf("%d",t[i].vote[k]); } printf("\n"); } } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator