結果
問題 | No.1904 Never giving up! |
ユーザー |
|
提出日時 | 2022-04-15 22:48:12 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 3,621 bytes |
コンパイル時間 | 1,923 ms |
コンパイル使用メモリ | 197,144 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-12-25 01:56:59 |
合計ジャッジ時間 | 2,484 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 9 |
ソースコード
#include <bits/stdc++.h>using namespace std;using ll = long long;//#include <atcoder/modint>//using namespace atcoder;//using mint = modint998244353;#pragma GCC target ("avx2")#pragma GCC optimization ("O3")const int MOD = (1e9+7);void printmat(const vector<vector<int>>& mat) {for (auto row : mat) {for (auto elem : row)cout << elem << " ";cout << "\n";}}void printdq(const deque<char>& v) {for (auto elem : v)cout << elem << " ";cout << endl;}void printv(const vector<int>& v) {for (auto elem : v)cout << elem << " ";cout << "\n";}void printvll(const vector<ll>& v) {for (auto elem : v)cout << elem << " ";cout << endl;}void printd(const deque<int>& v) {for (auto elem : v)cout << elem << " ";cout << endl;}void printvp(const vector<pair<int,int>>& vp) {for (auto pr : vp) {cout << pr.first << ", " << pr.second;cout << endl;}}void printvs(const vector<set<int>>& vs) {for (auto row : vs) {for (auto elem : row)cout << elem << ", ";cout << endl;}}void printht(const unordered_map<int, int>& ht) {for (auto elem : ht)cout << elem.first << " : " << elem.second << endl;}void printmp(const map<int, int>& ht) {for (auto elem : ht)cout << elem.first << " : " << elem.second << endl;}void printst(const set<int>& st) {for (auto elem : st)cout << elem << " ";cout << endl;}bool isPrime(long long n) {if (n <= 1)return false;if (n <= 3)return true;if (n % 2 == 0 || n % 3 == 0)return false;for (long long i = 5; i * i <= n; i = i + 6)if (n % i == 0 || n % (i + 2) == 0)return false;return true;}map<long long, long long> primeFactors(long long n) {map<long long, long long> ans;while (n % 2 == 0) {ans[2]++;n = n/2;}for (long long i = 3; i*i <= (n); i = i + 2) {while (n % i == 0) {ans[i]++;n = n/i;}}if (n > 2)ans[n]++;return ans;}int find_f(const vector<int>& uf, int i) {while (uf[i]!=i)i = uf[i];return i;}void union_f(vector<int>& uf, vector<int>& sz, int a, int b) {a = find_f(uf, a);b = find_f(uf, b);//cout << "a, b = " << a << ", " << b << endl;if (a==b) return;if (sz[a] < sz[b]) {//cout << "sz[a], sz[b] = " << sz[a] << ", " << sz[b] << endl;//cout << "a, b = " << a << ", " << b << endl;swap(a,b);//cout << "a, b = " << a << ", " << b << endl;}sz[a] += sz[b];uf[b] = a;}long long modexp(long long b, long long e, long long M) {if (!e) return 1;b %= M;long long x = modexp(b * b % M, e / 2, M);if (e % 2) {return b * x % M;} else {return x;}}int main() {ios_base::sync_with_stdio(false);cin.tie(NULL);int T=1, caseIdx=0;//cin >> T;while (T--) {caseIdx++;ll n, x=1;cin >> n;vector<ll> v(n);map<int,int> mp;for (int i=0; i<n; i++) {cin >> v[i];mp[v[i]]++;x = x*(i+1);}//printvll(v);for (auto it=mp.begin(); it!=mp.end(); it++) {int m = it->second;while (m>1) {x /= m;m--;}}cout << x << "\n";//cout << "Case #" << caseIdx << ": " << ans << "\n";}}