# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
20630 |
2017-02-13T03:58:29 Z |
model_code |
Boat (APIO16_boat) |
C++11 |
|
229 ms |
1532 KB |
/*
* Author: Geunwoo Bae(functionx)
* Time Complexity: O(N^3)
*/
#include<stdio.h>
#include<algorithm>
#include<vector>
#define mod 1000000007
using namespace std;
typedef long long lld;
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", &s, &e);
que[qcn].ix=i, que[qcn].x=s, que[qcn++].pm=1;
que[qcn].ix=i, que[qcn].x=e+1, que[qcn++].pm=-1;
}
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:47:20: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf("%d", &n);
^
boat.cpp:50:34: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf("%lld%lld", &s, &e);
^
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
1532 KB |
Output is correct |
2 |
Correct |
0 ms |
1532 KB |
Output is correct |
3 |
Correct |
0 ms |
1532 KB |
Output is correct |
4 |
Correct |
0 ms |
1532 KB |
Output is correct |
5 |
Correct |
0 ms |
1532 KB |
Output is correct |
6 |
Correct |
0 ms |
1532 KB |
Output is correct |
7 |
Correct |
0 ms |
1532 KB |
Output is correct |
8 |
Correct |
0 ms |
1532 KB |
Output is correct |
9 |
Correct |
0 ms |
1532 KB |
Output is correct |
10 |
Correct |
0 ms |
1532 KB |
Output is correct |
11 |
Correct |
0 ms |
1532 KB |
Output is correct |
12 |
Correct |
0 ms |
1532 KB |
Output is correct |
13 |
Correct |
0 ms |
1532 KB |
Output is correct |
14 |
Correct |
0 ms |
1532 KB |
Output is correct |
15 |
Correct |
0 ms |
1532 KB |
Output is correct |
16 |
Correct |
0 ms |
1532 KB |
Output is correct |
17 |
Correct |
0 ms |
1532 KB |
Output is correct |
18 |
Correct |
0 ms |
1532 KB |
Output is correct |
19 |
Correct |
0 ms |
1532 KB |
Output is correct |
20 |
Correct |
0 ms |
1532 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
1532 KB |
Output is correct |
2 |
Correct |
0 ms |
1532 KB |
Output is correct |
3 |
Correct |
0 ms |
1532 KB |
Output is correct |
4 |
Correct |
0 ms |
1532 KB |
Output is correct |
5 |
Correct |
0 ms |
1532 KB |
Output is correct |
6 |
Correct |
0 ms |
1532 KB |
Output is correct |
7 |
Correct |
0 ms |
1532 KB |
Output is correct |
8 |
Correct |
0 ms |
1532 KB |
Output is correct |
9 |
Correct |
0 ms |
1532 KB |
Output is correct |
10 |
Correct |
0 ms |
1532 KB |
Output is correct |
11 |
Correct |
0 ms |
1532 KB |
Output is correct |
12 |
Correct |
0 ms |
1532 KB |
Output is correct |
13 |
Correct |
0 ms |
1532 KB |
Output is correct |
14 |
Correct |
0 ms |
1532 KB |
Output is correct |
15 |
Correct |
0 ms |
1532 KB |
Output is correct |
16 |
Correct |
0 ms |
1532 KB |
Output is correct |
17 |
Correct |
0 ms |
1532 KB |
Output is correct |
18 |
Correct |
0 ms |
1532 KB |
Output is correct |
19 |
Correct |
0 ms |
1532 KB |
Output is correct |
20 |
Correct |
0 ms |
1532 KB |
Output is correct |
21 |
Correct |
93 ms |
1532 KB |
Output is correct |
22 |
Correct |
89 ms |
1532 KB |
Output is correct |
23 |
Correct |
76 ms |
1532 KB |
Output is correct |
24 |
Correct |
86 ms |
1532 KB |
Output is correct |
25 |
Correct |
89 ms |
1532 KB |
Output is correct |
26 |
Correct |
196 ms |
1532 KB |
Output is correct |
27 |
Correct |
203 ms |
1532 KB |
Output is correct |
28 |
Correct |
196 ms |
1532 KB |
Output is correct |
29 |
Correct |
196 ms |
1532 KB |
Output is correct |
30 |
Correct |
0 ms |
1532 KB |
Output is correct |
31 |
Correct |
0 ms |
1532 KB |
Output is correct |
32 |
Correct |
0 ms |
1532 KB |
Output is correct |
33 |
Correct |
0 ms |
1532 KB |
Output is correct |
34 |
Correct |
0 ms |
1532 KB |
Output is correct |
35 |
Correct |
0 ms |
1532 KB |
Output is correct |
36 |
Correct |
0 ms |
1532 KB |
Output is correct |
37 |
Correct |
0 ms |
1532 KB |
Output is correct |
38 |
Correct |
0 ms |
1532 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
1532 KB |
Output is correct |
2 |
Correct |
0 ms |
1532 KB |
Output is correct |
3 |
Correct |
0 ms |
1532 KB |
Output is correct |
4 |
Correct |
0 ms |
1532 KB |
Output is correct |
5 |
Correct |
0 ms |
1532 KB |
Output is correct |
6 |
Correct |
0 ms |
1532 KB |
Output is correct |
7 |
Correct |
0 ms |
1532 KB |
Output is correct |
8 |
Correct |
0 ms |
1532 KB |
Output is correct |
9 |
Correct |
0 ms |
1532 KB |
Output is correct |
10 |
Correct |
0 ms |
1532 KB |
Output is correct |
11 |
Correct |
0 ms |
1532 KB |
Output is correct |
12 |
Correct |
0 ms |
1532 KB |
Output is correct |
13 |
Correct |
0 ms |
1532 KB |
Output is correct |
14 |
Correct |
0 ms |
1532 KB |
Output is correct |
15 |
Correct |
0 ms |
1532 KB |
Output is correct |
16 |
Correct |
0 ms |
1532 KB |
Output is correct |
17 |
Correct |
0 ms |
1532 KB |
Output is correct |
18 |
Correct |
0 ms |
1532 KB |
Output is correct |
19 |
Correct |
0 ms |
1532 KB |
Output is correct |
20 |
Correct |
0 ms |
1532 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
1532 KB |
Output is correct |
2 |
Correct |
0 ms |
1532 KB |
Output is correct |
3 |
Correct |
0 ms |
1532 KB |
Output is correct |
4 |
Correct |
0 ms |
1532 KB |
Output is correct |
5 |
Correct |
0 ms |
1532 KB |
Output is correct |
6 |
Correct |
0 ms |
1532 KB |
Output is correct |
7 |
Correct |
0 ms |
1532 KB |
Output is correct |
8 |
Correct |
0 ms |
1532 KB |
Output is correct |
9 |
Correct |
0 ms |
1532 KB |
Output is correct |
10 |
Correct |
0 ms |
1532 KB |
Output is correct |
11 |
Correct |
0 ms |
1532 KB |
Output is correct |
12 |
Correct |
0 ms |
1532 KB |
Output is correct |
13 |
Correct |
0 ms |
1532 KB |
Output is correct |
14 |
Correct |
0 ms |
1532 KB |
Output is correct |
15 |
Correct |
0 ms |
1532 KB |
Output is correct |
16 |
Correct |
0 ms |
1532 KB |
Output is correct |
17 |
Correct |
0 ms |
1532 KB |
Output is correct |
18 |
Correct |
0 ms |
1532 KB |
Output is correct |
19 |
Correct |
0 ms |
1532 KB |
Output is correct |
20 |
Correct |
0 ms |
1532 KB |
Output is correct |
21 |
Correct |
93 ms |
1532 KB |
Output is correct |
22 |
Correct |
89 ms |
1532 KB |
Output is correct |
23 |
Correct |
76 ms |
1532 KB |
Output is correct |
24 |
Correct |
86 ms |
1532 KB |
Output is correct |
25 |
Correct |
89 ms |
1532 KB |
Output is correct |
26 |
Correct |
196 ms |
1532 KB |
Output is correct |
27 |
Correct |
203 ms |
1532 KB |
Output is correct |
28 |
Correct |
196 ms |
1532 KB |
Output is correct |
29 |
Correct |
196 ms |
1532 KB |
Output is correct |
30 |
Correct |
0 ms |
1532 KB |
Output is correct |
31 |
Correct |
0 ms |
1532 KB |
Output is correct |
32 |
Correct |
0 ms |
1532 KB |
Output is correct |
33 |
Correct |
0 ms |
1532 KB |
Output is correct |
34 |
Correct |
0 ms |
1532 KB |
Output is correct |
35 |
Correct |
0 ms |
1532 KB |
Output is correct |
36 |
Correct |
0 ms |
1532 KB |
Output is correct |
37 |
Correct |
0 ms |
1532 KB |
Output is correct |
38 |
Correct |
0 ms |
1532 KB |
Output is correct |
39 |
Correct |
0 ms |
1532 KB |
Output is correct |
40 |
Correct |
0 ms |
1532 KB |
Output is correct |
41 |
Correct |
0 ms |
1532 KB |
Output is correct |
42 |
Correct |
0 ms |
1532 KB |
Output is correct |
43 |
Correct |
0 ms |
1532 KB |
Output is correct |
44 |
Correct |
0 ms |
1532 KB |
Output is correct |
45 |
Correct |
0 ms |
1532 KB |
Output is correct |
46 |
Correct |
0 ms |
1532 KB |
Output is correct |
47 |
Correct |
0 ms |
1532 KB |
Output is correct |
48 |
Correct |
0 ms |
1532 KB |
Output is correct |
49 |
Correct |
0 ms |
1532 KB |
Output is correct |
50 |
Correct |
0 ms |
1532 KB |
Output is correct |
51 |
Correct |
0 ms |
1532 KB |
Output is correct |
52 |
Correct |
0 ms |
1532 KB |
Output is correct |
53 |
Correct |
0 ms |
1532 KB |
Output is correct |
54 |
Correct |
0 ms |
1532 KB |
Output is correct |
55 |
Correct |
0 ms |
1532 KB |
Output is correct |
56 |
Correct |
0 ms |
1532 KB |
Output is correct |
57 |
Correct |
0 ms |
1532 KB |
Output is correct |
58 |
Correct |
0 ms |
1532 KB |
Output is correct |
59 |
Correct |
99 ms |
1532 KB |
Output is correct |
60 |
Correct |
89 ms |
1532 KB |
Output is correct |
61 |
Correct |
86 ms |
1532 KB |
Output is correct |
62 |
Correct |
103 ms |
1532 KB |
Output is correct |
63 |
Correct |
93 ms |
1532 KB |
Output is correct |
64 |
Correct |
229 ms |
1532 KB |
Output is correct |
65 |
Correct |
226 ms |
1532 KB |
Output is correct |
66 |
Correct |
229 ms |
1532 KB |
Output is correct |
67 |
Correct |
226 ms |
1532 KB |
Output is correct |
68 |
Correct |
223 ms |
1532 KB |
Output is correct |
69 |
Correct |
83 ms |
1532 KB |
Output is correct |
70 |
Correct |
86 ms |
1532 KB |
Output is correct |
71 |
Correct |
86 ms |
1532 KB |
Output is correct |
72 |
Correct |
89 ms |
1532 KB |
Output is correct |
73 |
Correct |
93 ms |
1532 KB |
Output is correct |
74 |
Correct |
19 ms |
1532 KB |
Output is correct |
75 |
Correct |
19 ms |
1532 KB |
Output is correct |
76 |
Correct |
19 ms |
1532 KB |
Output is correct |
77 |
Correct |
19 ms |
1532 KB |
Output is correct |
78 |
Correct |
19 ms |
1532 KB |
Output is correct |