??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
#include <iostream>
#include <limits>
using namespace std;
template<typename T>
void showMinMax()
{
cout << "min: " << numeric_limits<T>::min() << endl;
cout << "max: " << numeric_limits<T>::max() << endl;
cout << endl;
}

int main()
{
cout << "short:" << endl;
showMinMax<short>();
cout << "int:" << endl;
showMinMax<int>();
cout << "long:" << endl;
showMinMax<long>();
cout << "long long:" << endl;
showMinMax<long long>();
cout << "float:" << endl;
showMinMax<float>();
cout << "double:" << endl;
showMinMax<double>();
cout << "long double:" << endl;
showMinMax<long double>();
cout << "unsigned short:" << endl;
showMinMax<unsigned short>();
cout << "unsigned int:" << endl;
showMinMax<unsigned int>();
cout << "unsigned long:" << endl;
showMinMax<unsigned long>();
cout << "unsigned long long:" << endl;
showMinMax<unsigned long long>();
}
#include <stdio.h>
#include <stdlib.h>
#include <vector>
using namespace std;

struct Node
{
int i,j;
int value;
};
long num[100000];
vector<Node> matrix;

int main()
{
long n;
long long m;
scanf("%ld %lld",&n,&m);
long i,j;
for(i = 0;i < n;++i)
{
scanf("%ld",&num[i]);
}

for(i = 0;i < n;++i)
{
if(num[i] > m)
{
break;
}
}

if(i < n)
{
printf("-1\n");
return 0;
}
long long res = -1;
long long sum;
long max,min = 0;
for(i = 0;i < n;++i)
{
if(i > 0)
{
min = 1000000;
for(j = 0;j < matrix.size();++j)
{
if(matrix[j].j == i - 1 && matrix[j].value < min)
{
min = matrix[j].value;
}
}
}
else
{
min = 0;
}
sum = 0;
Node node;
max = -1;
for(j = i;j < n;++j)
{
sum += num[j];
if(sum <= m)
{
if(max < num[j])
{
max = num[j];
}
node.i = i;
node.j = j;
node.value = max + min;
matrix.push_back(node);
if(j == n - 1)
{
if(res != -1)
{
if(node.value < res)
{
res = node.value;
}
}
else
{
res = node.value;
}
}
}
else
{
break;
}
}
}
printf("%lld\n",res);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <vector>
using namespace std;

struct Node
{
int i,j;
int value;
};
long num[100000];
vector<Node> matrix;

int main()
{
long n;
long long m;
scanf("%ld %lld",&n,&m);
long i,j;
for(i = 0;i < n;++i)
{
scanf("%ld",&num[i]);
}

for(i = 0;i < n;++i)
{
if(num[i] > m)
{
break;
}
}

if(i < n)
{
printf("-1\n");
return 0;
}
long long res = -1;
long long sum;
long max,min = 0;
for(i = 0;i < n;++i)
{
if(i > 0)
{
min = 1000000;
for(j = 0;j < matrix.size();++j)
{
if(matrix[j].j == i - 1 && matrix[j].value < min)
{
min = matrix[j].value;
}
}
}
else
{
min = 0;
}
sum = 0;
Node node;
max = -1;
for(j = i;j < n;++j)
{
sum += num[j];
if(sum <= m)
{
if(max < num[j])
{
max = num[j];
}
node.i = i;
node.j = j;
node.value = max + min;
matrix.push_back(node);
if(j == n - 1)
{
if(res != -1)
{
if(node.value < res)
{
res = node.value;
}
}
else
{
res = node.value;
}
}
}
else
{
break;
}
}
}
printf("%lld\n",res);
return 0;
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> fun(int n)

{
vector<int> last,all;
int i,j,k;
for(i = 1;i < 10;++i)
all.push_back(i);
if(n == 1)
return all;
int size;
int num;
for(i = 2;i <= n;++i)
{
last = all;
all.clear();
size = (int)last.size();
for(j = 0;j < size;++j)
{
for(k = 0;k < 10;++k)
{
num = last[j] * 10 + k;
if(num % i == 0)
all.push_back(num);
}
}
last.clear();
}
return all;
}
int
MaxSubsequenceSum(
const
int
A[],
int
N)
{
int
ThisSum,MaxSum,i,j,k;
MaxSum
=
0
;
for
(i
=
0
;i
<
N;i
++
)
for
(j
=
i;j
<
N;j
++
)
{
ThisSum
=
0
;
for
(k
=
i;k
<=
j;k
++
) ThisSum
+=
A[k];
if
(ThisSum
>
MaxSum) MaxSum
=
ThisSum;
}
return
MaxSum;
}
int
MaxSubsequenceSum(
const
int
A[],
int
N)
{
int
ThisSum,MaxSum,i,j;
MaxSum
=
0
;
for
(i
=
0
;i
<
N;i
++
)
{
ThisSum
=
0
;
for
(j
=
i;j
<
N;j
++
)
{
ThisSum
+=
A[k];
if
(ThisSum
>
MaxSum) MaxSum
=
ThisSum;
}
}
return
MaxSum;
}
static
int
MaxSubSum(
const
int
A[],
int
Left,
int
Right)
{
int
MaxLeftSum,MaxRightSum;
int
MaxLeftBorderSum,MaxRightBorderSum;
int
LeftBorderSum,RightBorderSum;
int
Center,i;
if
(Left
==
Right)
if
(A[left]
>
0
)
return
A[left];
else
return
0
;
Center
=
(Left
+
Right)
/
2
;
MaxLeftSum
=
MaxSubSum(A,Left,Center);
MaxRightSum
=
MaxSubSum(A,Center
+
1
,Right);
MaxLeftBorderSum
=
0
;
LeftBorderSum
=
0
;
for
(i
=
Center;i
>=
Left;i
--
)
{
LeftBorderSum
+=
A[i];
if
(LeftBorderSum
>
MaxLeftBorderSum) MaxLeftBorderSum
=
LeftBorderSum;
}
MaxRightBorderSum
=
0
;
RightBorderSum
=
0
;
for
(i
=
Center
+
1
;i
<=
Right;i
++
)
{
RightBorderSum
+=
A[i];
if
(RightBorderSum
>
MaxRightBorderSum) MaxRightBorderSum
=
RightBorderSum;
}
return
Max3(MaxLeftSum,MaxRightSum,MaxLeftBorderSum
+
MaxRightBorderSum);
}
int
MaxSubsequenceSum(
const int A[],int
N)
{
return
MaxSubSum(A,
0
,N
-
1
);
}
intMaxSubsequenceSum(
const int
A[],
int
N)
{
int
ThisSum,MaxSum,i;
ThisSum
=
MaxSum
=
0
;
for
(i
=
0
;i
<
N;i
++
)
{
ThisSum
+=
A[i];
if
(ThisSum
>
MaxSum)
MaxSum
=
ThisSum;
else
ThisSum
=
0
;
}
return
MaxSum;
}
参考《数据结构与法分析?/font>
《More Effective CPP?br />
《Effective STL?br />
《ƈ行程序设计?br />
《数据结构与法分析——C语言描述?/font>
class
X;
void
fun(X
*
x)
{
//
在解引用指针之前信它非0
if
(x
!=
0
)
//
解引用指?/span>
}
class Type;
void op(const Type &t1,const Type &t2);
int main()

{
Type obj1;
// 讄obj1为某个?br />
// 错误Q引用参数的实参不能?
op(obj1,0);
//
return 0;
}