私は次のことをしなければならないオンラインチャレンジをしています。
村で行われるコンテストがあります。そのため、最初の行に 2 つの数字 N (コンテストに参加する人数) と K (何人がステージ 2 に進むことができるか) を入力します。
その後、両方の段階で各候補者に N 倍の票を入力します。
入力例:
5 3
9 2
3 10
5 6
8 4
6 5
ご覧のとおり、 , を入力N=5
しますK=3
。これは 5 つの候補を意味するため、追加の 5 行とそのうちの 3 行がステージ 2 に進みます。
配列を並べ替えた後、最も多くの票を獲得した候補者は、6、8、および 9 の候補者です。したがって、彼らはステージ 2 に進みます。勝者は、ステージ 2 で最も多くの票を獲得した候補者です。この場合、6 は 5 票で最多 (8 は 4 票、9 は 2 票) であるため、6 のインデックスである 5 を出力します。
私がこれまでに得たもの:
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int arr[50],nizabackup[50],n,k,niza2[50],saveindex[50],indexp=0;
cin >> n >> k;
for(int i=0;i<n;i++)
{
cin >> arr[i] >> niza2[i];
nizabackup[i] = arr[i];
}
sort(arr,arr+n);
for(int j=n;j>=k;j--)
{
for(int k=0;k<n;k++)
{
if(arr[j]==nizabackup[k])
{
saveindex[0]=k;
indexp++;
}
}
}
sort(saveindex,saveindex+indexp);
cout << saveindex[indexp];
return 0;
}
何をすべきかのヒントと、追加の質問が必要です-デバッガーが 2 番目の for ループを読み取らないのはなぜですか?