蹲组团学习的,蹲大佬帮忙看看这道题错哪儿了
查看原帖
蹲组团学习的,蹲大佬帮忙看看这道题错哪儿了
532582
zhuchenrui楼主2021/6/29 21:15
#include <iostream>
using namespace std;
int vote[5000001];
int vote_num[5000001];
int n,m;
int li,ri,si,ki;
int main() {
    cin >> n >> m;
    for(int i = 1;i <= n;i++){
        vote_num[i] = 0;
    }
    for(int i = 1;i <= n;i ++){
        cin >> vote[i];
        vote_num[vote[i]] ++;
    }
    while( m > 0 ){
        m--;
        cin >> li >> ri >> si >> ki;
        int winner,length;
        bool have = false;
        length = ri - li + 1;
        for(int i = li;i <= ri;i++){
            if(vote_num[i] > (length/2)){
                winner = i;
                have = true;
                break;
            }
        }
        if(have == 0){
            cout << si << "\n";
            int tem,target;
            for(int i = 0;i < ki;i++){
                cin >> tem;
                target = vote[tem];
                vote[tem] = si;
                vote_num[target] --;
                vote_num[si] ++;
            }
        }else{
            cout << winner << "\n";
            int tem,target;
            for(int i = 0;i < ki;i++){
                cin >> tem;
                target = vote[tem];
                vote[tem] = winner;
                vote_num[target] --;
                vote_num[winner] ++;
            }
        }
    }
    int max = 0,answer;
    bool ans = false;
    for(int i = 1;i <= n;i ++){
        if(max < vote_num[i]){
            max = vote_num[i];
            answer = i;
            ans = true;
        }
        if(max == vote_num[i]){
            ans = false;
        }
    }
    if(ans == 1){
        cout << answer;
    }else{
        cout << "-1";
    }
    return 0;
}

换行还莫名其妙多了一行,我巨迷,我写的没啥问题啊....

萌新等人一起组团学习

2021/6/29 21:15
加载中...