“碰头就反向移动”一类的题目,诀窍就是无视碰头,始终处理极端位置的情况。附一段STL求数组最值的代码
#include<iostream>
#include<cstdio>#include<cstring>
using namespace std;
#define INF 0xfffffff
#define MAXS 1000005
#define MAXT 10005
int main()
{
int i,t,len,n,dis;
cin>>t;
while(t--)
{
cin>>len>>n;
int maxl=-INF,minl=-INF;
for(i=0;i<n;i++)
{
cin>>dis;
maxl=max(maxl,max(dis,len-dis));
minl=max(minl,min(dis,len-dis));
}
cout<<minl<<" "<<maxl<<endl;
}
return 0;
}
-----------------------------------------------------------
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include <iostream>
- #include <algorithm>
- #include <time.h>
- using namespace std;
- int main()
- {
- int a[100];
- for(int i=1;i<=10;i++)
- a[i]=i;
- int *p=max_element(a+1,a+10+1);
- int *q=min_element(a+1,a+10+1);
- printf("%d %d \n",*p,*q);
- return 0;
- }