Submission details
Task:Aristocracy
Sender:TLE
Submission time:2025-11-08 14:02:37 +0200
Language:C++ (C++17)
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.01 sdetails
#2ACCEPTED0.01 sdetails
#3ACCEPTED0.01 sdetails
#4ACCEPTED0.01 sdetails
#5ACCEPTED0.01 sdetails
#6ACCEPTED0.03 sdetails
#7ACCEPTED0.04 sdetails
#8ACCEPTED0.03 sdetails
#9ACCEPTED0.04 sdetails
#10ACCEPTED0.24 sdetails
#11ACCEPTED0.03 sdetails
#12ACCEPTED0.04 sdetails
#13ACCEPTED0.03 sdetails
#14ACCEPTED0.04 sdetails
#15ACCEPTED0.25 sdetails
#16ACCEPTED0.25 sdetails
#17ACCEPTED0.01 sdetails

Code

#include <bits/stdc++.h>
#define fi first
#define se second
#define For(type, i, a, b) for (type i = (a); i <= (b); ++i)
#define endl '\n'
using namespace std;
 
typedef long long ll;
 
const ll maxN = 1e18;
const ll minN = -1e18;
const ll MOD = 1e9 + 7;
 
const ll limit = 1e5 + 5;
 
ll a[limit], f[limit], b[limit];
ll n, l;
const ll mod = 1e9 + 7;

void FastIn(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
}
map<string, ll> dp;
string s[limit];

ll pow(ll a, ll n)
{
    a %= mod;
    if(n == 1) return a % mod;
    int tmp = pow(a % mod, n / 2);
    return (n & 1) ? tmp % mod * tmp % mod * a % mod : tmp % mod * tmp % mod;
}

ll C(ll p, ll n){
    p++;
    n++;
    return f[n - 1] * pow(f[p - 1] * f[n - p], mod - 2) % mod;
}
void ReadIn(){
  cin >> n;

  ll kd = 0;

  f[0] = 1; 
 //   cin >> n;
  for(ll i = 1; i <= 1e5 + 1; i++){
    f[i] = (f[i-1] % mod * i % mod) % mod; 
  }

  For(ll, i, 1, n){
    cin >> s[i] >> l;
    dp[s[i]]++;
    // if(dp[s] == 0){
    //     kd ++;
    //     b[kd] = 
    // }
  }
  
  For(ll, i, 1, n){
    // cout << s[i] << endl;
    if(dp[s[i]] != 0){
        kd ++;
        b[kd] = dp[s[i]];
        dp[s[i]] = 0;
    }
  }
//   For(ll, i, 1, kd){
//     cout << b[i] << " ";
//   }
    ll res = 1;
    For(ll, i, 1, kd){
        res = (res % mod * C(b[i], n) % mod) % mod;
        n -= b[i];
    }
    cout << res;
}
int main(){
    FastIn();
    ReadIn();
}
// g++ -o output
// g++ A.cpp
// ./a.out

Test details

Test 1

Verdict: ACCEPTED

input
4
Uolevi 1
Maija 3
Uolevi 2
Maija 2

correct output
6

user output
6

Test 2

Verdict: ACCEPTED

input
31
Eric 9
Charles 7
Sverker 2
Eric 10
...

correct output
541197645

user output
541197645

Test 3

Verdict: ACCEPTED

input
19
Ivan 4
Feodor 1
Feodor 2
Dmitry 1
...

correct output
939302456

user output
939302456

Test 4

Verdict: ACCEPTED

input
41
William 1
William 2
Henry 1
Stephen 1
...

correct output
520019025

user output
520019025

Test 5

Verdict: ACCEPTED

input
216
Peter 1
Linus 1
Cletus 1
Clement 1
...

correct output
200519221

user output
200519221

Test 6

Verdict: ACCEPTED

input
100000
A 1
A 2
A 3
A 4
...

correct output
1

user output
1

Test 7

Verdict: ACCEPTED

input
100000
E 1
Y 1
Y 2
M 1
...

correct output
504127783

user output
504127783

Test 8

Verdict: ACCEPTED

input
100000
Maija 1
Uolevi 1
Maija 2
Maija 3
...

correct output
328286172

user output
328286172

Test 9

Verdict: ACCEPTED

input
100000
Maijx 1
Maije 1
Maijw 1
Maijp 1
...

correct output
178134668

user output
178134668

Test 10

Verdict: ACCEPTED

input
100000
Bwvfj 1
Zmcpk 1
Jnmhz 1
Vcqtv 1
...

correct output
804665298

user output
804665298

Test 11

Verdict: ACCEPTED

input
100000
A 947476077
A 209406366
A 64254608
A 370109404
...

correct output
1

user output
1

Test 12

Verdict: ACCEPTED

input
100000
F 779918796
L 978222897
L 977989517
O 263870841
...

correct output
903086284

user output
903086284

Test 13

Verdict: ACCEPTED

input
100000
Maija 968540665
Uolevi 869194539
Uolevi 530855688
Maija 232728327
...

correct output
271775549

user output
271775549

Test 14

Verdict: ACCEPTED

input
100000
Uolevj 501874596
Uolevm 133829533
Uolevd 13322011
Uolevw 418508186
...

correct output
529945879

user output
529945879

Test 15

Verdict: ACCEPTED

input
100000
Hamql 748803883
Mpfaf 709208011
Gegcd 685359815
Yvain 890816531
...

correct output
166192905

user output
166192905

Test 16

Verdict: ACCEPTED

input
100000
Barmfsykcm 225712723
Xmvycwxssc 893904167
Wpetqrazdz 316367309
Eatxvkieif 111661228
...

correct output
457992974

user output
457992974

Test 17

Verdict: ACCEPTED

input
1
Ltwgcnsajxaxhacysdjhrpzymwxaen...

correct output
1

user output
1