Submission #1751602
Source Code Expand
#include<bits/stdc++.h> #define rep(i,a,b) for(int i=(a);i<=(b);i++) #define per(i,a,b) for(int i=(a);i>=(b);i--) #define forE(i,x) for(int i=head[x];i!=-1;i=ne[i]) using namespace std; typedef long long i64; typedef unsigned long long u64; typedef unsigned u32; typedef pair<int,int> pin; #define mk(a,b) make_pair(a,b) #define lowbit(x) ((x)&(-(x))) #define sqr(a) ((a)*(a)) #define clr(a) (memset((a),0,sizeof(a))) #define ls ((x)<<1) #define rs (((x)<<1)|1) #define mid (((l)+(r))>>1) #define pb push_back #define w1 first #define w2 second inline void read(int &x){ x=0;int f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} x*=f; } inline void read(i64 &x){ x=0;int f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} x*=f; } inline void judge(){ freopen("in.txt","r",stdin); freopen("out.txt","w",stdout); } /*******************************head*******************************/ const int maxn=100005; const int mod=1e9+7; int n; i64 A,B,S[maxn]; struct szsz{ int sum[maxn]; inline void add(int x,int v){ while(x<=n){ sum[x]=(sum[x]+v)%mod; x+=lowbit(x); } } inline int query(int x){ if(x<0)return 0; int res=0; while(x){ res=(res+sum[x])%mod; x-=lowbit(x); } return res; } inline int query(int l,int r){ if(l>r)return 0; return query(r)-query(l-1); } }F,G; int f[maxn],g[maxn]; inline int find(int x,int v){ int l=1,r=x,ans=0; while(l<=r){ int md=(l+r)>>1; if(S[x]-S[md]>=v){ ans=md;l=md+1; }else{ r=md-1; } }return ans; } int main(){ read(n);read(A);read(B); rep(i,1,n)read(S[i]); int lstf=0,lstg=0; f[1]=1;g[1]=1; S[0]=-1e18; F.add(1,f[1]); G.add(1,g[1]); rep(i,2,n){ int posf=find(i,A),posg=find(i,B); //part F if(S[i]-S[i-2]>=A) f[i]=g[i-1]; f[i]=(f[i]+G.query(lstf,min(i-2,posf+1)))%mod; //part G if(S[i]-S[i-2]>=B) g[i]=f[i-1]; g[i]=(g[i]+F.query(lstg,min(i-2,posg+1)))%mod; if(S[i]-S[i-1]<B)lstf=i; if(S[i]-S[i-1]<A)lstg=i; F.add(i,f[i]); G.add(i,g[i]); // printf("%d %d\n",f[i],g[i]); } bool vf=1,vg=1; int ans=0; per(i,n,1){ if(vf){ ans=(ans+f[i])%mod; } //if(vf&&S[i+1]-S[i-1]>=A){ // ans=(ans+g[i])%mod; //} if(vg){ ans=(ans+g[i])%mod; } //if(vg&&S[i+1]-S[i-1]>=B){ // ans=(ans+f[i])%mod; //} if(S[i]-S[i-1]<A)vf=0; if(S[i]-S[i-1]<B)vg=0; } cout<<ans<<endl; return 0; }
Submission Info
Submission Time | |
---|---|
Task | C - Division into Two |
User | Scape |
Language | C++14 (GCC 5.4.1) |
Score | 0 |
Code Size | 2608 Byte |
Status | WA |
Exec Time | 36 ms |
Memory | 2560 KB |
Judge Result
Set Name | Sample | All | ||||||
---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 0 / 1100 | ||||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | s1.txt, s2.txt, s3.txt, s4.txt |
All | 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, 28.txt, 29.txt, 30.txt, 31.txt, 32.txt, 33.txt, 34.txt, 35.txt, 36.txt, 37.txt, 38.txt, 39.txt, 40.txt, 41.txt, 42.txt, 43.txt, 44.txt, 45.txt, 46.txt, 47.txt, 48.txt, 49.txt, 50.txt, 51.txt, 52.txt, 53.txt, 54.txt, 55.txt, 56.txt, 57.txt, 58.txt, 59.txt, 60.txt, 61.txt, 62.txt, 63.txt, 64.txt, s1.txt, s2.txt, s3.txt, s4.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
01.txt | WA | 32 ms | 2560 KB |
02.txt | WA | 30 ms | 2560 KB |
03.txt | AC | 27 ms | 2560 KB |
04.txt | AC | 26 ms | 2560 KB |
05.txt | AC | 28 ms | 2560 KB |
06.txt | WA | 26 ms | 2560 KB |
07.txt | AC | 28 ms | 2560 KB |
08.txt | WA | 33 ms | 2560 KB |
09.txt | WA | 29 ms | 2560 KB |
10.txt | AC | 28 ms | 2560 KB |
11.txt | AC | 27 ms | 2560 KB |
12.txt | AC | 33 ms | 2560 KB |
13.txt | WA | 32 ms | 2560 KB |
14.txt | AC | 29 ms | 2560 KB |
15.txt | WA | 26 ms | 2560 KB |
16.txt | AC | 17 ms | 2560 KB |
17.txt | WA | 22 ms | 2560 KB |
18.txt | WA | 26 ms | 2560 KB |
19.txt | AC | 22 ms | 2560 KB |
20.txt | AC | 23 ms | 2560 KB |
21.txt | WA | 23 ms | 2560 KB |
22.txt | WA | 24 ms | 2560 KB |
23.txt | AC | 21 ms | 2560 KB |
24.txt | WA | 23 ms | 2560 KB |
25.txt | WA | 27 ms | 2560 KB |
26.txt | AC | 26 ms | 2560 KB |
27.txt | AC | 26 ms | 2560 KB |
28.txt | WA | 26 ms | 2560 KB |
29.txt | WA | 25 ms | 2560 KB |
30.txt | AC | 25 ms | 2560 KB |
31.txt | WA | 24 ms | 2560 KB |
32.txt | AC | 25 ms | 2560 KB |
33.txt | WA | 28 ms | 2560 KB |
34.txt | WA | 21 ms | 2560 KB |
35.txt | WA | 28 ms | 2560 KB |
36.txt | AC | 22 ms | 2560 KB |
37.txt | AC | 20 ms | 2560 KB |
38.txt | AC | 21 ms | 2560 KB |
39.txt | WA | 30 ms | 2560 KB |
40.txt | AC | 17 ms | 2560 KB |
41.txt | AC | 20 ms | 2560 KB |
42.txt | AC | 17 ms | 2560 KB |
43.txt | AC | 33 ms | 2560 KB |
44.txt | AC | 33 ms | 2560 KB |
45.txt | AC | 34 ms | 2560 KB |
46.txt | WA | 33 ms | 2560 KB |
47.txt | AC | 36 ms | 2560 KB |
48.txt | AC | 36 ms | 2560 KB |
49.txt | AC | 1 ms | 256 KB |
50.txt | AC | 1 ms | 256 KB |
51.txt | AC | 1 ms | 256 KB |
52.txt | AC | 1 ms | 256 KB |
53.txt | AC | 1 ms | 256 KB |
54.txt | AC | 1 ms | 256 KB |
55.txt | AC | 1 ms | 256 KB |
56.txt | AC | 1 ms | 256 KB |
57.txt | AC | 1 ms | 256 KB |
58.txt | AC | 1 ms | 256 KB |
59.txt | AC | 1 ms | 256 KB |
60.txt | AC | 1 ms | 256 KB |
61.txt | AC | 1 ms | 256 KB |
62.txt | AC | 1 ms | 256 KB |
63.txt | AC | 1 ms | 256 KB |
64.txt | AC | 1 ms | 256 KB |
s1.txt | AC | 1 ms | 256 KB |
s2.txt | AC | 1 ms | 256 KB |
s3.txt | AC | 1 ms | 256 KB |
s4.txt | AC | 1 ms | 256 KB |