Run ID 作者 问题 语言 测评结果 Time Memory 代码长度 提交时间
27663 唐心 评选最佳品牌 C++ Accepted 2 MS 752 KB 1447 2022-06-07 18:06:52

Tests(5/5):


Code:

#include <iostream> using namespace std; int main(){ int m,n; cin>>m>>n; string str[n+1]; for(int i=1;i<=n;i++) { cin>>str[i]; } int a[m+1];//记录投票过程,-1代表淘汰 while(true) { for(int i=1;i<=m;i++) { //重新计票,所有没有被淘汰的票数归零 if(a[i]!=-1) a[i]=0; } for(int i=1;i<=n;i++) { //计票 string s=str[i]; for(int j=0;j<s.size();j++) { char t=s[j]-'0'; if(t==0) { //如果为0 说明弃权 break; } else { //不为0,则代表要给t投票,如果t没有被淘汰则给它投票 if(a[t]>=0) { a[t]=a[t]+1; break; } } } // for(int i=1;i<=s.size();i++) // { // cout << a[i]<<" "; // } // cout<<endl; } int min=m+1; int max=0; for(int i=1;i<=m;i++) { if(a[i]>=0) { if(min>a[i]) min=a[i]; if(max<a[i]) max=a[i]; } } if(max>min) { //最大值比最小值大,需要将所有最小值的淘汰 for(int i=1;i<=m;i++){ if(a[i]==min) a[i]=-1; } } else { //最大值和最小值相等说明平票 int count=0; int dx=0; for(int i=1;i<=m;i++){ if(a[i]==max){ count++; dx=i; } } if(count>1){ //如果数量多,说明评选失败 cout<<0-max; }else{ cout<<dx; } break; } } }