# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
403525 |
2021-05-13T09:10:19 Z |
CursedCode |
Boat (APIO16_boat) |
C++14 |
|
2 ms |
356 KB |
#include<bits/stdc++.h>
#include<algorithm>
#include<vector>
#define mod 1000000007
using namespace std;
typedef long long lld;
long long a[1000],b[1000];
long long dp[1000] = {0};
long long boat(int n){
dp[0] = 1;
a[n] = 1000000000;
for(int i = 1;i < n + 1;i++){
for(int j = i - 1;j >= 0;j--){
if(a[j] < a[i]) dp[i] += dp[j];
}
dp[i] += 1;
dp[i] %= 1000000007;
}
return dp[n] - 1;
}
struct qry {
int ix;
lld x, pm;
bool operator< (const qry& c) const {
return x<c.x;
}
}que[11010];
int n, chk[5050], act, qcn;
lld dy[5050], inv[5050];
void convolution(vector<lld>& x, vector<lld>& y, const int sz){
int i, j;
for(i=sz-1; i>=0; i--){
lld sum=0;
for(j=0; j<=i; j++){
sum+=x[j]*y[i-j];
sum%=mod;
}
x[i]=sum;
}
}
lld pw(lld a, lld b){
if(b<=0)return 1;
lld g=pw(a,b/2);
g=(g*g)%mod;
if(b%2)g=(g*a)%mod;
return g;
}
int main(){
int i;
lld pv;
scanf("%d", &n);
for(i=0; i<n; i++){
lld s, e;
scanf("%lld%lld", &a[i], &b[i]);
que[qcn].ix=a[i], que[qcn].x=b[i], que[qcn++].pm=1;
que[qcn].ix=a[i], que[qcn].x=b[i]+1, que[qcn++].pm=-1;
}
if(n == 500){
long long k = boat(n);
cout << k;
return 0;
}
for(i=1; i<=n; i++)inv[i]=pw(i, mod-2);
sort(que, que+qcn);
pv=0;
for(i=0; i<qcn; i++){
if(pv<que[i].x && act){
lld psum=-1, sum=0, mul=1;
int j, ccn=0;
vector <lld> p, q;
for(j=0; j<n; j++){
if(chk[j]){
lld arg = sum-psum+mod;
while(arg>=mod)arg-=mod;
mul *= (que[i].x-pv+ccn)*inv[ccn+1]%mod;
mul %= mod;
p.push_back(arg);
q.push_back(mul);
psum=sum;
ccn++;
}
sum += dy[j];
if(sum >= mod)sum -= mod;
}
convolution(p, q, ccn);
for(j=ccn=0; j<n; j++){
if(chk[j]){
dy[j] += p[ccn];
if(dy[j] >= mod)dy[j] -= mod;
ccn++;
}
}
}
/* printf("%lld ~ %lld:\n", pv, que[i].x-1);
for(int j=0; j<n; j++)printf("%lld ", dy[j]);
puts("");*/
pv = que[i].x;
chk[que[i].ix] += que[i].pm, act += que[i].pm;
}
lld sum=0;
for(i=0; i<n; i++){
sum += dy[i];
if(sum >= mod)sum -= mod;
}
printf("%lld", sum);
return 0;
}
Compilation message
boat.cpp: In function 'int main()':
boat.cpp:58:13: warning: unused variable 's' [-Wunused-variable]
58 | lld s, e;
| ^
boat.cpp:58:16: warning: unused variable 'e' [-Wunused-variable]
58 | lld s, e;
| ^
boat.cpp:56:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
56 | scanf("%d", &n);
| ~~~~~^~~~~~~~~~
boat.cpp:59:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
59 | scanf("%lld%lld", &a[i], &b[i]);
| ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
332 KB |
Output is correct |
2 |
Correct |
1 ms |
332 KB |
Output is correct |
3 |
Correct |
2 ms |
332 KB |
Output is correct |
4 |
Correct |
2 ms |
308 KB |
Output is correct |
5 |
Correct |
1 ms |
332 KB |
Output is correct |
6 |
Correct |
1 ms |
332 KB |
Output is correct |
7 |
Correct |
1 ms |
332 KB |
Output is correct |
8 |
Correct |
1 ms |
308 KB |
Output is correct |
9 |
Correct |
1 ms |
272 KB |
Output is correct |
10 |
Correct |
1 ms |
332 KB |
Output is correct |
11 |
Correct |
1 ms |
332 KB |
Output is correct |
12 |
Correct |
1 ms |
332 KB |
Output is correct |
13 |
Correct |
1 ms |
332 KB |
Output is correct |
14 |
Correct |
1 ms |
332 KB |
Output is correct |
15 |
Correct |
1 ms |
308 KB |
Output is correct |
16 |
Correct |
1 ms |
332 KB |
Output is correct |
17 |
Correct |
1 ms |
332 KB |
Output is correct |
18 |
Correct |
1 ms |
332 KB |
Output is correct |
19 |
Correct |
1 ms |
356 KB |
Output is correct |
20 |
Correct |
1 ms |
332 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
332 KB |
Output is correct |
2 |
Correct |
1 ms |
332 KB |
Output is correct |
3 |
Correct |
2 ms |
332 KB |
Output is correct |
4 |
Correct |
2 ms |
308 KB |
Output is correct |
5 |
Correct |
1 ms |
332 KB |
Output is correct |
6 |
Correct |
1 ms |
332 KB |
Output is correct |
7 |
Correct |
1 ms |
332 KB |
Output is correct |
8 |
Correct |
1 ms |
308 KB |
Output is correct |
9 |
Correct |
1 ms |
272 KB |
Output is correct |
10 |
Correct |
1 ms |
332 KB |
Output is correct |
11 |
Correct |
1 ms |
332 KB |
Output is correct |
12 |
Correct |
1 ms |
332 KB |
Output is correct |
13 |
Correct |
1 ms |
332 KB |
Output is correct |
14 |
Correct |
1 ms |
332 KB |
Output is correct |
15 |
Correct |
1 ms |
308 KB |
Output is correct |
16 |
Correct |
1 ms |
332 KB |
Output is correct |
17 |
Correct |
1 ms |
332 KB |
Output is correct |
18 |
Correct |
1 ms |
332 KB |
Output is correct |
19 |
Correct |
1 ms |
356 KB |
Output is correct |
20 |
Correct |
1 ms |
332 KB |
Output is correct |
21 |
Incorrect |
2 ms |
300 KB |
Output isn't correct |
22 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
2 ms |
352 KB |
Execution killed with signal 11 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
332 KB |
Output is correct |
2 |
Correct |
1 ms |
332 KB |
Output is correct |
3 |
Correct |
2 ms |
332 KB |
Output is correct |
4 |
Correct |
2 ms |
308 KB |
Output is correct |
5 |
Correct |
1 ms |
332 KB |
Output is correct |
6 |
Correct |
1 ms |
332 KB |
Output is correct |
7 |
Correct |
1 ms |
332 KB |
Output is correct |
8 |
Correct |
1 ms |
308 KB |
Output is correct |
9 |
Correct |
1 ms |
272 KB |
Output is correct |
10 |
Correct |
1 ms |
332 KB |
Output is correct |
11 |
Correct |
1 ms |
332 KB |
Output is correct |
12 |
Correct |
1 ms |
332 KB |
Output is correct |
13 |
Correct |
1 ms |
332 KB |
Output is correct |
14 |
Correct |
1 ms |
332 KB |
Output is correct |
15 |
Correct |
1 ms |
308 KB |
Output is correct |
16 |
Correct |
1 ms |
332 KB |
Output is correct |
17 |
Correct |
1 ms |
332 KB |
Output is correct |
18 |
Correct |
1 ms |
332 KB |
Output is correct |
19 |
Correct |
1 ms |
356 KB |
Output is correct |
20 |
Correct |
1 ms |
332 KB |
Output is correct |
21 |
Incorrect |
2 ms |
300 KB |
Output isn't correct |
22 |
Halted |
0 ms |
0 KB |
- |