제출 #1114270

#제출 시각아이디문제언어결과실행 시간메모리
1114270ljtunasZapina (COCI20_zapina)C++14
110 / 110
210 ms3584 KiB
#include <bits/stdc++.h> using namespace std; #define db double #define pb push_back #define ll long long #define int long long #define ii pair<int, int> #define fi first #define se second #define vi vector <int> #define vii vector<ii> #define sqrt sqrtl #define FORV(v, H) for(auto &v: H) #define FOR(i, a, b) for(int i=a;i<=b;++i) #define FORD(i, a, b) for(int i=a;i>=b;--i) #define BIT(mask, i) ((mask >> i) & 1LL) #define ONBIT(mask, i) (mask bitor (1LL << i)) #define cnt_BIT(i) __builtin_popcountll(i) #define task "zapina" const int MAXN = 350 + 10; const int oo = 1e18 + 8; const int MOD = 1e9 + 7; int N; int dp[MAXN][MAXN][2]; int GT[MAXN], CKN[MAXN][MAXN]; int Pow(int a, int n) { if (n == 0) return 1; int h = Pow(a, n / 2); h = (h * h) % MOD; if (n & 1) return (a * h) % MOD; return h; } int Ckn(int k, int n) { if (k > n) return 0; int MAU = (GT[n - k] * GT[k]) % MOD; int TU = GT[n]; return (TU * Pow(MAU, MOD - 2)) % MOD; } int solve(int i, int cnt, bool ok) { if (i > N) { if (cnt == 0) return ok; return 0; } if (~dp[i][cnt][ok]) return dp[i][cnt][ok]; int cur = 0; FOR(j, 0, cnt) { if (j == i) cur = (cur + solve(i + 1, cnt - j, 1) * CKN[j][cnt]) % MOD; else cur = (cur + solve(i + 1, cnt - j, ok) * CKN[j][cnt]) % MOD; } return dp[i][cnt][ok] = cur; } signed main() { ios_base::sync_with_stdio(0); cin.tie(nullptr); cout.tie(nullptr); if (fopen(task".inp", "r")) { freopen(task".inp", "r", stdin); freopen(task".out", "w", stdout); } GT[0] = 1; FOR(i, 1, MAXN - 5) GT[i] = (GT[i - 1] * i) % MOD; FOR(i, 0, MAXN) { FOR(j, 0, MAXN) CKN[i][j] = Ckn(i, j); } cin >> N; memset(dp, -1, sizeof(dp)); cout << solve(1, N, 0); return 0; }

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

zapina.cpp: In function 'int main()':
zapina.cpp:69:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   69 |         freopen(task".inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
zapina.cpp:70:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   70 |         freopen(task".out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
zapina.cpp:78:35: warning: iteration 360 invokes undefined behavior [-Waggressive-loop-optimizations]
   78 |         FOR(j, 0, MAXN) CKN[i][j] = Ckn(i, j);
      |                         ~~~~~~~~~~^~~~~~~~~~~
zapina.cpp:16:37: note: within this loop
   16 | #define FOR(i, a, b)   for(int i=a;i<=b;++i)
......
   78 |         FOR(j, 0, MAXN) CKN[i][j] = Ckn(i, j);
      |             ~~~~~~~~~~               
zapina.cpp:78:9: note: in expansion of macro 'FOR'
   78 |         FOR(j, 0, MAXN) CKN[i][j] = Ckn(i, j);
      |         ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...