Submission #793304

#TimeUsernameProblemLanguageResultExecution timeMemory
793304kingfran1907Boat (APIO16_boat)C++14
0 / 100
3 ms2260 KiB
#include <bits/stdc++.h> using namespace std; typedef long long llint; const int maxn = 1010; const int mod = 1e9+7; int mul(int a, int b) { llint out = (llint)a * b; return out % mod; } int pot(int a, int b) { if (b == 0) return 1; if (b % 2 == 1) return pot(a, b - 1); int out = pot(a, b / 2); return mul(out, out); } int n; int a[maxn], b[maxn]; int fac[maxn]; int dp[maxn][maxn]; int inv[maxn]; int len[maxn]; int main() { scanf("%d", &n); for (int i = 1; i <= n; i++) scanf("%d%d", a+i, b+i); vector< int > v; for (int i = 0; i <= n; i++) { v.push_back(a[i]); v.push_back(b[i] + 1); } sort(v.begin(), v.end()); v.resize(unique(v.begin(), v.end()) - v.begin()); for (int i = 0; i < n; i++) { a[i] = lower_bound(v.begin(), v.end(), a[i]) - v.begin(); b[i] = lower_bound(v.begin(), v.end(), b[i] + 1) - v.begin() - 1; } //for (int i = 0; i < v.size() - 1; i++) len[i] = v[i + 1] - v[i]; //for (int i = 0; i < v.size() - 1; i++) printf("%d ", len[i]); printf("\n\n"); for (int i = 1; i <= n; i++) inv[i] = pot(i, mod - 2); for (int i = 0; i < v.size() - 1; i++) dp[0][i] = 1; for (int i = 1; i <= n; i++) { for (int j = 1; j < v.size() - 1; j++) { dp[i][j] = dp[i][j - 1]; if (a[i] <= j && j <= b[i]) { int kol = 1; int pov = len[j]; for (int k = i - 1; k >= 0; k--) { dp[i][j] += mul(dp[k][j - 1], pov), dp[i][j] %= mod; if (a[k] <= j && j <= b[k]) { kol++; pov = mul(pov, inv[kol]); } } } } //for (int j = 0; j < v.size() - 1; j++) printf("%d ", dp[i][j]); //printf("\n"); } int sum = 0; for (int i = 1; i <= n; i++) sum += dp[i][v.size() - 2], sum %= mod; printf("%d\n", sum); return 0; }

Compilation message (stderr)

boat.cpp: In function 'int main()':
boat.cpp:48:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   48 |  for (int i = 0; i < v.size() - 1; i++) dp[0][i] = 1;
      |                  ~~^~~~~~~~~~~~~~
boat.cpp:50:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   50 |   for (int j = 1; j < v.size() - 1; j++) {
      |                   ~~^~~~~~~~~~~~~~
boat.cpp:30:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   30 |  scanf("%d", &n);
      |  ~~~~~^~~~~~~~~~
boat.cpp:32:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   32 |   scanf("%d%d", a+i, b+i);
      |   ~~~~~^~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...