Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <algorithm>
- #include <bitset>
- #include <deque>
- #include <cmath>
- #include <cstdio>
- #include <cstdlib>
- #include <cstring>
- #include <iostream>
- #include <list>
- #include <map>
- #include <queue>
- #include <set>
- #include <sstream>
- #include <stack>
- #include <string>
- #include <utility>
- #include <vector>
- #define fst first
- #define snd second
- #define all(x) (x).begin(), (x).end()
- #define clr( a , v ) memset( a , v , sizeof(a) )
- #define pb push_back
- #define mp make_pair
- #define sz size()
- #define FORN( i , s , n ) for( int i = s ; i < (int)(n) ; i++ )
- #define FOR( i , n ) FORN( i , 0 , n )
- #define FORIT(i,x) for( typeof x.begin() i = x.begin() ; i != x.end() ; i++ )
- #define trace(x) cerr << #x << ": " << x << endl;
- #define trace2(x, y) cerr << #x << ": " << x << " | " << #y << ": " << y << endl;
- #define read ios::sync_with_stdio(false)
- using namespace std;
- typedef long long int64;
- typedef vector <int> vi;
- typedef pair <int,int> ii;
- typedef vector <string> vs;
- typedef vector <ii> vii;
- const int MAX = 1000005;
- int64 x[MAX], y[MAX], a[MAX];
- map <int64,int64> M;
- multiset <int64> A,B;
- int main():%y{
- int n; cin >> n;
- FOR( i , n ) scanf("%lld", &a[i]);
- FOR( i , n ) x[i] = ++M[a[i]];
- FOR( i , n ){
- y[i] = M[a[i]] - x[i] + 1;
- A.insert( y[i] );
- }
- int64 ans = 0; int p,q;
- FOR( i , n ){
- B.insert( y[i] );
- p = A.end() - A.upper_bound( x[i] );
- q = B.end() - B.upper_boudn( x[i] );
- ans += ( p - q );
- }
- cout << ans << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment