817B - Makes And The Product - CodeForces Solution


combinatorics implementation math sortings *1500

Please click on ads to support us..

Python Code:

import math

def CountFrequency(my_list):
    freq = {}
    for item in my_list:
        if (item in freq):
            freq[item] += 1
        else:
            freq[item] = 1
    return freq
        
 
n=int(input())
l=sorted(list(map(int,input().split())))
freq=CountFrequency(l)
v=[]
for value in freq.items():
    v.append(value[1])
if v[0]>=3:
    print(math.comb(v[0],3))
elif v[0]==1 and v[1]>1:
    print(math.comb(v[0],1)*math.comb(v[1],2))
elif v[0]==2 and v[1]>=1:
    print(math.comb(v[0],2)*math.comb(v[1],1))
else:
    print(math.comb(v[0],1)*math.comb(v[1],1)*math.comb(v[2],1))

C++ Code:

#include <bits/stdc++.h>
#define pii pair<int,int>
#define int long long 
#define ios ios::sync_with_stdio(false),cin.tie(0);
#define multi int t;cin>>t;for(int i=1;i<=t;++i)solve()
#define rep(i,a,b) for(int i=a;i<=b;++i)


using namespace std;
using i64 = long long;
const int N = 1e5 + 10;
int c[N][4];

void solve() {
	int n;
	cin >> n;
	vector<int> a(n + 1);
	map<int, int> mp;
	rep(i, 1, n) cin >> a[i];
	sort(a.begin() + 1, a.end());
 	rep(i, 1, n) mp[a[i]]++;

 	if(a[1] != a[2] && a[2] != a[3]) {
 		cout << 1ll * mp[a[1]] * mp[a[2]] * mp[a[3]] << "\n"; 
 	}else if(a[1] == a[2] && a[2] == a[3]) {
 		cout << c[mp[a[1]]][3] << "\n";
 	}else if(a[1] == a[2]) {
 		cout << c[mp[a[1]]][2] * mp[a[3]] << "\n";
 	}else if(a[3] == a[2]) {
		cout << c[mp[a[2]]][2] * mp[a[1]] << "\n";
 	}
}

signed main() {
	ios;
	c[1][0] = c[1][1] = 1;
    for (int i = 2; i < N; i++){
        c[i][0] = 1;
        for (int j = 1; j < 4; j++)
            c[i][j] = (c[i - 1][j] + c[i - 1][j - 1]);
    }
	solve();
	//multi;
	return 0;
}


Comments

Submit
0 Comments
More Questions

1401C - Mere Array
1613B - Absent Remainder
1536B - Prinzessin der Verurteilung
1699B - Almost Ternary Matrix
1545A - AquaMoon and Strange Sort
538B - Quasi Binary
424A - Squats
1703A - YES or YES
494A - Treasure
48B - Land Lot
835A - Key races
1622C - Set or Decrease
1682A - Palindromic Indices
903C - Boxes Packing
887A - Div 64
755B - PolandBall and Game
808B - Average Sleep Time
1515E - Phoenix and Computers
1552B - Running for Gold
994A - Fingerprints
1221C - Perfect Team
1709C - Recover an RBS
378A - Playing with Dice
248B - Chilly Willy
1709B - Also Try Minecraft
1418A - Buying Torches
131C - The World is a Theatre
1696A - NIT orz
1178D - Prime Graph
1711D - Rain