-
Notifications
You must be signed in to change notification settings - Fork 21
/
CF 364B.cpp
81 lines (78 loc) · 1.94 KB
/
CF 364B.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/* ***********************************************
Author :Eopxt
Created Time :Mon 23 May 2016 08:46:32 PM CST
File Name :I.cpp
************************************************ */
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <sstream>
#include <map>
#include <string>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <queue>
using namespace std;
#define rep(i,n) for (int i=1; i<=(n); i++)
#define REP(i,n) for (int i=0; i<(n); i++)
#define For(i,s,t) for (int i=(s); i<=(t); i++)
#define FOR(i,s,t) for (int i=(s); i>=(t); i--)
#define foreach(j,x) for(int j=adj[x]; j>=0; j=E[j].nxt)
#define Foreach(it,v) for(__typeof((v).begin()) it=(v).begin(); it!=(v).end(); it++)
#define pb push_back
#define mp make_pair
#define INF 0x3f3f3f3f
#define mem(a,x) memset(a,x,sizeof(a))
#define X first
#define Y second
#define sqr(x) ((x)*(x))
#define C1(x) cout<<(x)<<endl
#define C2(x,y) cout<<(x)<<" "<<(y)<<endl
#define C3(x,y,z) cout<<(x)<<" "<<(y)<<" "<<(z)<<endl
typedef long long lld;
typedef vector<int> VI;
typedef pair<int,int> PII;
typedef vector< pair<int,int> > VPII;
int n,d,a[60],s[500009];
int main()
{
#ifndef ONLINE_JUDGE
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
#endif
scanf("%d%d",&n,&d);
rep(i,n) scanf("%d",&a[i]);
mem(s,-1);
s[0]=0;
int maxS=0;
rep(i,n) {
For(j,0,maxS)
if (s[j]>=0 && s[j]!=i) {
if (s[j+a[i]]<0) {
s[j+a[i]]=i;
maxS=max(maxS,j+a[i]);
}
}
}
int cur=0,cnt=0;
while (cur<maxS) {
int nxt=cur;
For(i,cur+1,cur+d)
if (s[i]>=0) nxt=i;
if (cur==nxt) {
printf("%d %d\n",cur,cnt);
return 0;
}
else {
cur=nxt;
cnt++;
}
}
printf("%d %d\n",cur,cnt);
return 0;
}