1:题目
2:代码
#include<iostream>
using namespace std;
const int N=1000010;
int n,k;
int q[N],s[N];
int cnt=0;
int main()
{
cin>> n >> k;
for(int i=0;i<n;i++)cin>> q[i];
// for(int i=0;i<n;i++)cout<< q[i];
for(int i=0;i<n;i++)
{
if(q[i]+k<=5)cnt++;
}
cout << cnt/3;
return 0;
}
2:第二题
第二题代码(虽然只过了3个测试点)
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N=1000010;
int n;
int q[N],tmp[N],s[N];
void merge_sort(int q[], int l, int r) // 归并排序
{
if (l >= r) return;
int mid = l + r >> 1;
merge_sort(q, l, mid);
merge_sort(q, mid + 1, r);
int k = 0, i = l, j = mid + 1;
while (i <= mid && j <= r)
if (q[i] <= q[j]) tmp[k ++ ] = q[i ++ ];
else tmp[k ++ ] = q[j ++ ];
while (i <= mid) tmp[k ++ ] = q[i ++ ];
while (j <= r) tmp[k ++ ] = q[j ++ ];
for (i = l, j = 0; i <= r; i ++, j ++ ) q[i] = tmp[j];
}
int main()
{
cin>> n;
for(int i=1;i<=n;i++)cin>>q[i];
merge_sort(q,1,n);
// for(int i=1;i<=n;i++)cout << q[i]<< ' ';
// if(i==1)cout << q[i];
// else
// for(int i=1;i<=n;i++)cout << q[i] <<' ';
// for(int i=1;i<=n;i++)s[i]=s[i-1]+q[i];
// for(int i=0;i<n;i++)cout << s[i];
// cout << endl;
for(int i=1;i<n;i++)
{
int res=q[i]+q[i+1];
// printf("%d\n",q[i]+q[i+1]);
if((q[i]+q[i+1])<0)
{
res=abs(res);
}
if((q[i]+q[i+1])%2!=0)
// cout<< q[i]+q[i+1] << ' ';
s[i]=q[i]+q[i+1];
}
// for(int i=1;i<n;i++)cout <<s[i]<<' ';
int max=0;
int min=0;
for(int i=1;i<=n;i++)
{
if(s[i]>max)max=s[i];
else if(s[i]<min)min=s[i];
}
if(max>=0)cout <<max;
else cout << min;
// cout << max;
return 0;
}
第二题正解
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int INF = 1e8;
int main()
{
int n;
scanf("%d", &n);
int sum = 0;
int a = -INF, b = INF;
while (n -- )
{
int x;
scanf("%d", &x);
if (x > 0) sum += x;
if (x < 0 && x % 2) a = max(a, x);
if (x > 0 && x % 2) b = min(b, x);
}
if (sum % 2) printf("%d\n", sum);
else printf("%d\n", max(sum + a, sum - b));
return 0;
}