C++アルゴリズム問題——洛谷P 1309スイスラウンド(BUG待更)


問題:時間の複雑さが高すぎる.解決策:A、Bの2つの配列を設定して、それぞれ勝ったグループと負けたグループを格納し、グループ内の順序は変わらず、最後にmergeでマージします.改めるべきで、更に待つべきで、交流を歓迎します.
#include #include using namespace std; int main(){
int N,R,Q;
int numQ,keyQ;
int size = 0;
cin >> N >> R >> Q;
keyQ = Q;
int* s = new int[2*N];
for(int i = 0; i < 2*N; i ++){
    cin >> s[i];
}
int* w = new int[2*N];
for(int i = 0; i < 2*N; i ++){
    cin >> w[i];
}
for(int i = 0; i < R; i ++){
    for(int j = 0; j < N; j+=2){
        if(w[j] > w[j + 1]) s[j] += 1;
        else s[j+1] += 1;
    }
    numQ = s[keyQ-1];

//cout < for(int t = keyQ -1; t >= 0; t–){ if(numQ == s[t]) { size++;//cout }