-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path1163B.cpp
More file actions
39 lines (37 loc) · 1.25 KB
/
1163B.cpp
File metadata and controls
39 lines (37 loc) · 1.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int a[n];
unordered_map<long int ,long int>um2;
unordered_map<long int ,long int>um;
for(int i=0;i<n;i++){cin>>a[i];um[a[i]]++;}
unordered_set<long int>us;
for(auto i=um.begin();i!=um.end();i++){
us.insert(i->second);
um2[i->second]++;
}
for(auto i=us.begin();i!=us.end();i++)cout<<*i<<" ";cout<<"\n";
if(us.size()==2 && ((*(us.begin())==1 && um2[*(us.begin())]==1) || (*(++us.begin())==1 && um2[*(++us.begin())]==1))){
cout<<n<<"\n";
return 0;
}
for(int i=n-1;i>=0;i--){
um2[um[a[i]]]--;
cout<<um[a[i]]<<" pppp "<<um2[um[a[i]]]<<"\n";
if(um2[um[a[i]]]==0){
us.erase(um[a[i]]);
}
um[a[i]]--;
if(um[a[i]])
{um2[um[a[i]]]++;
if(um2[um[a[i]]]==1)
us.insert(um[a[i]]);}
for(auto i=us.begin();i!=us.end();i++)cout<<*i<<" ";cout<<"\n";
if((us.size()==2 && ((*(us.begin())==1 && um2[*(us.begin())]==1) || (*(++us.begin())==1 && um2[*(++us.begin())]==1))) || (us.size()==1 && *us.begin()==1 && um2[*us.begin()]>1)){
cout<<i<<"\n";
return 0;
}
}
}