제출 #455011

#제출 시각아이디문제언어결과실행 시간메모리
455011nonsensenonsense1Boat (APIO16_boat)C++17
100 / 100
698 ms4372 KiB
#include <cstdio> #include <algorithm> const int md = 1000000007; inline int add(int a, int b) { a += b; if (a >= md) a -= md; return a; } inline int sub(int a, int b) { a -= b; if (a < 0) a += md; return a; } inline int mul(int a, int b) { return (long long)a * b % md; } int po(int a, int b) { int r = 1; while (b) { if (b & 1) r = mul(r, a); a = mul(a, a); b >>= 1; } return r; } inline int inv(int a) { return po(a, md - 2); } inline int di(int a, int b) { return mul(a, inv(b)); } const int N = 505; int n, d[N << 1], l[N], r[N], a[N << 1], p[N << 1][N], amt[N << 1], ncr[N << 1][N]; int main() { scanf("%d", &n); for (int i = 0; i < n; ++i) { scanf("%d%d", l + i, r + i); a[i << 1] = l[i]; a[i << 1 | 1] = r[i] + 1; } std::sort(a, a + n * 2); int len = std::unique(a, a + n * 2) - a; d[0] = 1; for (int i = 0; i < n; ++i) { for (int j = len - 1; j >= 1; --j) if (l[i] <= a[j - 1] && r[i] >= a[j] - 1) { if (!amt[j]) ncr[j][0] = a[j] - a[j - 1]; else ncr[j][amt[j]] = di(mul(ncr[j][amt[j] - 1], ncr[j][0] - amt[j]), amt[j] + 1); for (int k = amt[j]; k > 0; --k) { p[j][k] = add(p[j][k], p[j][k - 1]); d[j] = add(d[j], mul(p[j][k - 1], ncr[j][k])); } for (int k = 0; k < j; ++k) { p[j][0] = add(p[j][0], d[k]); d[j] = add(d[j], mul(ncr[j][0], d[k])); } ++amt[j]; } } int ans = 0; for (int i = 1; i < len; ++i) ans = add(ans, d[i]); printf("%d\n", ans); return 0; }

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

boat.cpp: In function 'int main()':
boat.cpp:46:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   46 |  scanf("%d", &n);
      |  ~~~~~^~~~~~~~~~
boat.cpp:48:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   48 |   scanf("%d%d", l + i, r + 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...