Submission #1284241

#TimeUsernameProblemLanguageResultExecution timeMemory
1284241vache_kocharyanZapina (COCI20_zapina)C++20
55 / 110
35 ms2860 KiB
#define _CRT_SECURE_NO_WARNINGS #include <bits/stdc++.h> #include <unordered_map> #include <unordered_set> #include <cassert> using namespace std; typedef long long ll; #define ss second #define ff first #define all(X) X.begin(), X.end() #define rall(X) X.rbegin(), X.rend() #define cinall(X) for(auto &i:X)cin >> i #define printall(X) for(auto &i:X)cout << i #define printFromTo(cont, i, j, ch) for(int _ = i; _ <= j; _++)cout << cont[_] << ch #define readFromTo(cont, i, j) for(int _ = i; _ <= j; _++)cin >> cont[_] #define fillFromTo(cont, i, j, x) for(int _ = i; _ <= j; _++)cont[_] = x; #define pb push_back #define MAKE_UNIQUE_KEEP_ORDER(vec) do { \ unordered_set<decltype((vec).front())> seen; \ (vec).erase(remove_if((vec).begin(), (vec).end(), [&](auto &val) { \ if (seen.count(val)) return true; \ seen.insert(val); \ return false; \ }), (vec).end()); \ } while(0) #define UNIQUE_SORT(vec) do { \ sort((vec).begin(), (vec).end()); \ (vec).erase(unique((vec).begin(), (vec).end()), (vec).end()); \ } while(0) #define yes cout << "YES" << endl #define no cout << "NO" << endl #define MIN(v) *min_element(all(v)) #define MAX(v) *max_element(all(v)) #define LB(c, x) (lower_bound((c).begin(), (c).end(), (x)) - (c).begin()) #define UB(c, x) (upper_bound((c).begin(), (c).end(), (x)) - (c).begin()) const int N = 350 + 5; const int LOG = 30; const long long INFLL = 1e18; const int INF = 1e9; const long double epsilon = 0.000001; const long long mod = 1e9 + 7; constexpr ll TEN[] = { 1LL, 10LL, 100LL, 1000LL, 10000LL, 100000LL, 1000000LL, 10000000LL, 100000000LL, 1000000000LL, 10000000000LL, 100000000000LL, 1000000000000LL, 10000000000000LL, 100000000000000LL, 1000000000000000LL, 10000000000000000LL, 100000000000000000LL, 1000000000000000000LL, }; long long binPowByMod(long long x, long long power, long long modx) { long long res = 1; long long base = x % modx; while (power > 0) { if (power & 1) res = (res * base) % modx; base = (base * base) % modx; power >>= 1; } return res; } void set_IO(string str = "") { if (!str.empty()) { freopen((str + ".in").c_str(), "r", stdin); freopen((str + ".out").c_str(), "w", stdout); } } long long add(long long x, long long y) { if (x + y >= mod) return x + y - mod; else return x + y; } long long dp[N][N]; long long dp1[N][N]; long long fact[N]; long long inv(long long x) { return binPowByMod(x, mod - 2, mod); } long long mult(long long x, long long y) { return ((x * y) % mod); } long long sub(long long a, long long b) { if (a - b < 0) { return a - b + mod; } else { return a - b; } } long long c[N][N]; void solve() { int n; cin >> n; fact[1] = 1; fact[0] = 1; for (int i = 2; i < N; i++) { fact[i] = mult(fact[i - 1], i); } for (int i = 0; i <= n; i++) { dp[1][i] = 1; dp1[1][i] = 1; } dp1[1][1] = 0; dp[1][0] = 1; for (int i = 0; i < N; i++) { c[i][0] = c[i][i] = 1; for (int j = 1; j < i; j++) { c[i][j] = c[i - 1][j - 1] + c[i - 1][j]; } } for (int i = 2; i <= n; i++) { for (int j = 0; j <= n; j++) { for (int k = 0; k <= j; k++) { dp[i][j] = add(dp[i][j], mult(dp[i - 1][j - k], c[j][k])); if (k != i) dp1[i][j] = add(dp1[i][j], mult(dp1[i - 1][j - k], c[j][k])); } } } cout << sub(dp[n][n], dp1[n][n]) << endl; } int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int t = 1; //cin >> t; while (t--) { solve(); cout << endl; } return 0; }

Compilation message (stderr)

zapina.cpp: In function 'void set_IO(std::string)':
zapina.cpp:87:24: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   87 |                 freopen((str + ".in").c_str(), "r", stdin);
      |                 ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
zapina.cpp:88:24: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   88 |                 freopen((str + ".out").c_str(), "w", stdout);
      |                 ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...