佬们这有逻辑错误么 // 27- 答案错误 // 边界条件? int main(){ int n; cin>> n; vector<int> a(n, 0); map<int, int> mp; for(int i = 0; i< n; ++i){ cin>> a[i]; mp[a[i] ]++; // cout<< a[i]<< ' '; } vector<int> res; for(auto & p: mp){ int key = p.first; int cnt = p.second; // cout<< "cnt= "<< cnt<< endl; int c = cnt%2 ==0 ? cnt/2 : (cnt+1)/2; // cout<< "c="<< c<< endl; // 找到第 c 个 key 的下标 int b= 1; for(int i = 0; i < n; ++i){ if(b == c && a[i] == key){ // cout<< "key="<<key<< "\ti="<< i << endl; res.push_back(i+1); break; }else if(a[i] == key){ b++; } } } sort(res.begin(), res.end()); cout<< mp.size()<< endl; for(int i = 0; i+1 < res.size(); ++i){ cout<< res[i]<< ' '; } if(res.size() ){ cout<< res.back()<< endl; }
点赞 1

相关推荐

牛客网
牛客网在线编程
牛客网题解
牛客企业服务