#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;
}
换行还莫名其妙多了一行,我巨迷,我写的没啥问题啊....
萌新等人一起组团学习