B2 - Cat Party
- #include<cstdio>
- #include<iostream>
- #include<algorithm>
- using namespace std;
- int n,a[100005];
- int color[100005]={0},maxl=-1,minl=99999;
- int num[100005]={0},x=0;
- int main(){
- cin>>n;
- for(int i=1;i<=n;i++){
- cin>>a[i];
- }
- for(int i=1;i<=n;i++){
- num[color[a[i]]]--;
- if(minl==color[a[i]]){
- if(num[minl]==0){
- minl=color[a[i]]+1;
- }
- }
- color[a[i]]++;
- num[color[a[i]]]++;
- if(maxl<color[a[i]]){
- maxl=color[a[i]];
- }
- if(minl>color[a[i]]){
- minl=color[a[i]];
- }
- //cout<<maxl*num[maxl]<<" "<<minl*num[minl]<<" "<<i<<endl;
- if(num[maxl]==1&&maxl-minl==1){
- x=i;
- }
- if(num[minl]==1&&minl==1&&maxl*num[maxl]+1==i){
- x=i;
- }
- if(num[minl]==i&&minl==1){
- x=i;
- }
- if(num[maxl]==1&&maxl==i){
- x=i;
- }
- //cout<<minl<<" "<<num[minl]<<" "<<maxl<<" "<<num[maxl]<<endl;
- }
- cout<<x<<endl;
- //if(n==1)cout<<1<<endl;
- }