Submission #1692016
Source Code Expand
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
template<typename T>inline void check_min(T a,T &b){if(a<b)b=a;}
namespace diaoye_chicken_dinner
{
typedef long long ll;
const int N=101000,M=N*30,INF=2147483647;
int n,m,K;
struct segment_treeeeee
{
#define lt (st[p][0])
#define rt (st[p][1])
#define mid ((L+R)>>1)
#define lts lt,L,mid
#define rts rt,mid+1,R
#define dog T.root
int st[M][2];
int w[M];
int e,root;
void init(){w[root=e=1]=INF;}
void init_s(){w[root=e=1]=0;st[1][0]=st[1][1]=0;}
int check(int &p){if(p)return p;p=++e;w[p]=INF;return p;}
int check_s(int &p){if(p)return p;p=++e;w[p]=0;lt=rt=0;return p;}
void modify(int s,int t,int x,int &p,int L=0,int R=K-1)
{
p=check(p);
if(s<=L && t>=R){check_min(x,w[p]);return;}
if(s<=mid)modify(s,t,x,lts);
if(t>mid)modify(s,t,x,rts);
}
int query(int x,int &p,int L=0,int R=K-1)
{
p=check(p);
if(L==R)return w[p];
int ret=w[p];
if(x<=mid)check_min(query(x,lts),ret);
else check_min(query(x,rts),ret);
return ret;
}
void inc(int s,int t,int &p,int L=0,int R=K-1)
{
p=check_s(p);
if(s<=L && t>=R){w[p]++;return;}
if(s<=mid)inc(s,t,lts);
if(t>mid)inc(s,t,rts);
}
int query_s(int x,int &p,int L=0,int R=K-1)
{
p=check_s(p);
if(L==R)return w[p];
int ret=w[p];
if(x<=mid)ret+=query_s(x,lts);
else ret+=query_s(x,rts);
return ret;
}
}T;
ll tx[N],ty[N],ans;
int A[N],B[N],L[N],R[N];
bool initialize()
{
scanf("%d%d",&n,&K),ans=m=0;
for(int i=1;i<=n;i++)
{
scanf("%d%d",A+i,B+i),ans+=A[i];
if(B[i]==1 && A[i]*2>K)return 0;
}
for(int i=1;i<=n;i++)tx[i+1]=tx[i]+A[i];
for(int i=n-1;i;i--)ty[i]=ty[i+1]+A[i+1];
for(int i=n;i;i--)
{
if(B[i]==2)continue;
m++;
ll tmp=ty[i],s,t;
s=(tx[i]+A[i])%K;
t=((tx[i]-A[i])%K+K)%K;
L[m]=((s-tmp)%K+K)%K;
R[m]=((t-tmp)%K+K)%K;
}
return 1;
}
ll fl[N],fr[N];
bool check_in(int x,int l,int r)
{
if(l<=r)return x>=l && x<=r;
return x<=r || x>=l;
}
void work()
{
T.init();
for(int i=m,j;i;i--)
{
j=T.query(L[i],dog);
fl[i]=(j==INF)?0:(fl[j]+(L[j]-L[i]+K)%K);
j=T.query(R[i],dog);
fr[i]=(j==INF)?0:(fl[j]+(L[j]-R[i]+K)%K);
if(L[i]<=R[i])
{
if(L[i])T.modify(0,L[i]-1,i,dog);
if(R[i]<K-1)T.modify(R[i]+1,K-1,i,dog);
}
else if(R[i]+1<=L[i]-1)T.modify(R[i]+1,L[i]-1,i,dog);
}
}
void solve()
{
if(!initialize()){printf("-1\n");return;}
// for(int i=1;i<=m;i++)printf("%d---%d\n",L[i],R[i]);
work();
// for(int i=1;i<=m;i++)printf("%lld , %lld\n",fl[i],fr[i]);
ll ret=INF*100000000ll;
T.init_s();
for(int i=1;i<=m;i++)
{
// printf(":%d %d\n",T.query_s(L[i],dog),T.query_s(R[i],dog));
if(T.query_s(L[i],dog)==i-1)check_min(fl[i],ret);
if(T.query_s(R[i],dog)==i-1)check_min(fr[i],ret);
if(L[i]<=R[i])T.inc(L[i],R[i],dog);
else T.inc(0,R[i],dog),T.inc(L[i],K-1,dog);
}
printf("%lld\n",ans*2+ret);
}
}
int main()
{
// freopen("F.in","r",stdin);
// freopen("F.out","w",stdout);
diaoye_chicken_dinner::solve();
return 0;
}
Submission Info
Submission Time
2017-10-18 16:59:40+0900
Task
F - Train Service Planning
User
Demerzel_IV
Language
C++14 (GCC 5.4.1)
Score
1700
Code Size
3214 Byte
Status
AC
Exec Time
274 ms
Memory
39168 KB
Compile Error
./Main.cpp: In function ‘bool diaoye_chicken_dinner::initialize()’:
./Main.cpp:69:30: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%d",&n,&K),ans=m=0;
^
./Main.cpp:72:35: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%d",A+i,B+i),ans+=A[i];
^
Judge Result
Set Name
Sample
All
subtask
subtask2
Score / Max Score
0 / 0
700 / 700
500 / 500
500 / 500
Status
Set Name
Test Cases
Sample
sample1.txt, sample2.txt, sample3.txt, sample4.txt
All
sample1.txt, sample2.txt, sample3.txt, sample4.txt, in1.txt, in10.txt, in101.txt, in102.txt, in103.txt, in104.txt, in105.txt, in106.txt, in107.txt, in108.txt, in109.txt, in11.txt, in110.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in2.txt, in20.txt, in21.txt, in22.txt, in23.txt, in24.txt, in25.txt, in26.txt, in27.txt, in28.txt, in3.txt, in4.txt, in5.txt, in6.txt, in7.txt, in8.txt, in9.txt, sample1.txt, sample2.txt, sample3.txt, sample4.txt, sub2in1.txt, sub2in10.txt, sub2in11.txt, sub2in12.txt, sub2in13.txt, sub2in14.txt, sub2in15.txt, sub2in16.txt, sub2in17.txt, sub2in18.txt, sub2in19.txt, sub2in2.txt, sub2in20.txt, sub2in21.txt, sub2in22.txt, sub2in23.txt, sub2in24.txt, sub2in3.txt, sub2in4.txt, sub2in5.txt, sub2in6.txt, sub2in7.txt, sub2in8.txt, sub2in9.txt, subin1.txt, subin10.txt, subin101.txt, subin102.txt, subin103.txt, subin104.txt, subin105.txt, subin106.txt, subin107.txt, subin108.txt, subin109.txt, subin11.txt, subin12.txt, subin13.txt, subin14.txt, subin15.txt, subin16.txt, subin17.txt, subin18.txt, subin19.txt, subin2.txt, subin20.txt, subin201.txt, subin21.txt, subin22.txt, subin23.txt, subin24.txt, subin3.txt, subin4.txt, subin5.txt, subin6.txt, subin7.txt, subin8.txt, subin9.txt
subtask
sample1.txt, sample2.txt, sample3.txt, subin1.txt, subin10.txt, subin101.txt, subin102.txt, subin103.txt, subin104.txt, subin105.txt, subin106.txt, subin107.txt, subin108.txt, subin109.txt, subin11.txt, subin12.txt, subin13.txt, subin14.txt, subin15.txt, subin16.txt, subin17.txt, subin18.txt, subin19.txt, subin2.txt, subin20.txt, subin201.txt, subin21.txt, subin22.txt, subin23.txt, subin24.txt, subin3.txt, subin4.txt, subin5.txt, subin6.txt, subin7.txt, subin8.txt, subin9.txt
subtask2
sample1.txt, sample2.txt, sample3.txt, sample4.txt, sub2in1.txt, sub2in10.txt, sub2in11.txt, sub2in12.txt, sub2in13.txt, sub2in14.txt, sub2in15.txt, sub2in16.txt, sub2in17.txt, sub2in18.txt, sub2in19.txt, sub2in2.txt, sub2in20.txt, sub2in21.txt, sub2in22.txt, sub2in23.txt, sub2in24.txt, sub2in3.txt, sub2in4.txt, sub2in5.txt, sub2in6.txt, sub2in7.txt, sub2in8.txt, sub2in9.txt
Case Name
Status
Exec Time
Memory
in1.txt
AC
4 ms
6400 KB
in10.txt
AC
96 ms
13568 KB
in101.txt
AC
84 ms
13568 KB
in102.txt
AC
88 ms
17664 KB
in103.txt
AC
80 ms
11520 KB
in104.txt
AC
93 ms
19712 KB
in105.txt
AC
93 ms
19712 KB
in106.txt
AC
84 ms
13568 KB
in107.txt
AC
88 ms
17664 KB
in108.txt
AC
80 ms
11520 KB
in109.txt
AC
93 ms
19712 KB
in11.txt
AC
140 ms
29952 KB
in110.txt
AC
93 ms
21760 KB
in12.txt
AC
126 ms
23808 KB
in13.txt
AC
93 ms
13568 KB
in14.txt
AC
141 ms
29952 KB
in15.txt
AC
136 ms
29952 KB
in16.txt
AC
138 ms
29952 KB
in17.txt
AC
142 ms
29952 KB
in18.txt
AC
140 ms
29952 KB
in19.txt
AC
106 ms
17664 KB
in2.txt
AC
128 ms
23808 KB
in20.txt
AC
108 ms
17664 KB
in21.txt
AC
123 ms
27904 KB
in22.txt
AC
116 ms
23808 KB
in23.txt
AC
127 ms
27904 KB
in24.txt
AC
128 ms
27904 KB
in25.txt
AC
31 ms
7424 KB
in26.txt
AC
32 ms
7424 KB
in27.txt
AC
30 ms
7424 KB
in28.txt
AC
32 ms
7424 KB
in3.txt
AC
95 ms
13568 KB
in4.txt
AC
143 ms
29952 KB
in5.txt
AC
121 ms
25728 KB
in6.txt
AC
133 ms
27904 KB
in7.txt
AC
78 ms
9472 KB
in8.txt
AC
11 ms
2304 KB
in9.txt
AC
125 ms
23808 KB
sample1.txt
AC
3 ms
6400 KB
sample2.txt
AC
2 ms
2304 KB
sample3.txt
AC
3 ms
6400 KB
sample4.txt
AC
3 ms
6400 KB
sub2in1.txt
AC
3 ms
6400 KB
sub2in10.txt
AC
3 ms
6400 KB
sub2in11.txt
AC
3 ms
6400 KB
sub2in12.txt
AC
3 ms
6400 KB
sub2in13.txt
AC
3 ms
6400 KB
sub2in14.txt
AC
3 ms
6400 KB
sub2in15.txt
AC
3 ms
6400 KB
sub2in16.txt
AC
3 ms
6400 KB
sub2in17.txt
AC
3 ms
6400 KB
sub2in18.txt
AC
3 ms
6400 KB
sub2in19.txt
AC
3 ms
6400 KB
sub2in2.txt
AC
3 ms
6400 KB
sub2in20.txt
AC
3 ms
6400 KB
sub2in21.txt
AC
3 ms
6400 KB
sub2in22.txt
AC
3 ms
6400 KB
sub2in23.txt
AC
3 ms
6400 KB
sub2in24.txt
AC
5 ms
6400 KB
sub2in3.txt
AC
3 ms
6400 KB
sub2in4.txt
AC
3 ms
6400 KB
sub2in5.txt
AC
3 ms
6400 KB
sub2in6.txt
AC
3 ms
6400 KB
sub2in7.txt
AC
2 ms
2304 KB
sub2in8.txt
AC
4 ms
6400 KB
sub2in9.txt
AC
4 ms
6400 KB
subin1.txt
AC
236 ms
33024 KB
subin10.txt
AC
260 ms
39168 KB
subin101.txt
AC
170 ms
35072 KB
subin102.txt
AC
156 ms
26880 KB
subin103.txt
AC
147 ms
24832 KB
subin104.txt
AC
145 ms
24832 KB
subin105.txt
AC
147 ms
24832 KB
subin106.txt
AC
146 ms
24832 KB
subin107.txt
AC
160 ms
30976 KB
subin108.txt
AC
160 ms
30976 KB
subin109.txt
AC
156 ms
28928 KB
subin11.txt
AC
244 ms
39168 KB
subin12.txt
AC
254 ms
39168 KB
subin13.txt
AC
253 ms
39168 KB
subin14.txt
AC
251 ms
39168 KB
subin15.txt
AC
188 ms
24832 KB
subin16.txt
AC
187 ms
24832 KB
subin17.txt
AC
151 ms
18688 KB
subin18.txt
AC
162 ms
18688 KB
subin19.txt
AC
158 ms
18688 KB
subin2.txt
AC
161 ms
18688 KB
subin20.txt
AC
159 ms
18688 KB
subin201.txt
AC
3 ms
6400 KB
subin21.txt
AC
39 ms
8448 KB
subin22.txt
AC
39 ms
8448 KB
subin23.txt
AC
40 ms
8448 KB
subin24.txt
AC
39 ms
8448 KB
subin3.txt
AC
265 ms
39168 KB
subin4.txt
AC
218 ms
36736 KB
subin5.txt
AC
244 ms
37120 KB
subin6.txt
AC
221 ms
39168 KB
subin7.txt
AC
17 ms
2304 KB
subin8.txt
AC
13 ms
2304 KB
subin9.txt
AC
274 ms
39168 KB