제출 #1192120

#제출 시각아이디문제언어결과실행 시간메모리
1192120SmuggingSpunAnagramistica (COCI21_anagramistica)C++20
110 / 110
12 ms16204 KiB
#include<bits/stdc++.h> #define taskname "C" using namespace std; const int lim = 2e3 + 5; const int mod = 1e9 + 7; void add(int& a, int b){ if((a += b) >= mod){ a -= mod; } } int Ckn[lim][lim]; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); if(fopen(taskname".inp", "r")){ freopen(taskname".inp", "r", stdin); } memset(Ckn, 0, sizeof(Ckn)); for(int n = Ckn[0][0] = 1; n < lim; n++){ Ckn[0][n] = 1; for(int k = 1; k <= n; k++){ Ckn[k][n] = (Ckn[k][n - 1] + Ckn[k - 1][n - 1]) % mod; } } int n, k; cin >> n >> k; map<vector<int>, int>cnt; for(int _ = 0; _ < n; _++){ vector<int>a(26, 0); string s; cin >> s; for(char& c : s){ a[c - 97]++; } cnt[a]++; } vector<int>dp(k + 1, 0); dp[0] = 1; for(auto& [u, v] : cnt){ vector<int>ndp = dp; for(int i = 1; i <= v; i++){ for(int j = k, bound_j = (i * (i - 1)) >> 1; j >= bound_j; j--){ add(ndp[j], 1LL * dp[j - bound_j] * Ckn[i][v] % mod); } } swap(dp, ndp); } cout << dp[k]; }

컴파일 시 표준 에러 (stderr) 메시지

anagramistica.cpp: In function 'int main()':
anagramistica.cpp:15:24: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   15 |                 freopen(taskname".inp", "r", stdin);
      |                 ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...