#include<bits/stdc++.h>
using namespace std;
int a[100007];
int cnt[100007];
int main(){
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
     scanf("%d",&a[i]);
 int ans=1;
 set<int>s,num;//数字出现的次数,数字
 map<int,int>vis;//记录数字出现的次数的个数
 cnt[a[1]]++;
 s.insert(cnt[a[1]]);
 num.insert(a[1]);
 vis[cnt[a[1]]]++;
 for(int i=2;i<=n;++i){
  vis[cnt[a[i]]]--;
  if(!vis[cnt[a[i]]])
            s.erase(s.find(cnt[a[i]]));
  cnt[a[i]]++;
  vis[cnt[a[i]]]++;
  s.insert(cnt[a[i]]);
  num.insert(a[i]);
  if(s.size()==2){
   if(*s.rbegin()-*s.begin()==1&&vis[*s.rbegin()]==1||*s.begin()==1&&vis[1]==1)//有一个数字多出现了一次或者有一个数字只出现了一次
    ans=i;
  }
  else if(s.size()==1&&(num.size()==1||*s.begin()==1))//只有一个数字或者都只出现了一次
   ans=i;
 }
 printf("%d",ans);
    return 0;
}

最新文章

  1. Android GPS应用开发
  2. String Date Calendar之间的转换
  3. Mongodb无法访问28107的问题
  4. Clank – 快速构建移动 APP 原型的 HTML/CSS 框架
  5. iis7下iis安全狗不能用怎么办(安装iis6兼容性)
  6. Python核心编程--学习笔记--9--文件和输入输出
  7. 使用Hint来优化执行计划
  8. 换行符‘\n’和回车符‘\r’
  9. Go语言程序的状态监控 via 达达
  10. 【前端】使用weinre对手机、微信浏览器页面调试
  11. IP地址 子网掩码 默认网关 DNS(转)
  12. glVertexAttribPointer 用法简介
  13. node.js 找不到 xxx 模块解决办法
  14. 12C -- 配置Application Continuity
  15. docker 时区设置
  16. 两个大数组foreach,找出相同的key数量,所用的时间对比
  17. iOS 静态库和动态库(库详解)
  18. Linux学习笔记(第九章)
  19. x64dbg使用心得
  20. linux环境下maven的安装配置

热门文章

  1. WCF寄宿(Host)之自我寄宿(Self-Hosting)简单实例【Console应用为宿主】
  2. css中单位px和em,rem的区别
  3. A N EAR -D UPLICATE D ETECTION A LGORITHM T O F ACILITATE D OCUMENT C LUSTERING——有时间看看里面的相关研究
  4. linux-常用指令2
  5. IO流 相关基础积累
  6. 【二叉树的递归】07路径组成数字的和【Sum Root to Leaf Numbers】
  7. C++ STL, sort用法。
  8. [Codeforces 1139D] Steps to One
  9. SqlServer2005的备份和还原(不同服务器)
  10. 人物-IT-刘强东:刘强东