题目:
Valera想给一个题设置时间限制(Time Limit),他写了n个正确的程序和m个错误的程序,每个程序都有自已运行的时间,设时间限制为v,一个程序只有运行时间不超过v才能AC,在所有能够AC的程序中,有的程序可以以其本身2倍运行时间通过,对于v,要满足一下要求:
1、v是一个正整数;
2、所有的正确程序都能通过;
3、至少有一个程序可以有一个额外的运行时间a;
4、所有的错误程序都不能通过;
5、v是所有满足的时间限制中最小的时间。
现给出这n个正确程序的运行时间和这m个错误程序的运行时间,求v,若不存在,则输出-1。
题解:
将最少运行时间的正确程序的时间乘以2,找出正确的程序运行时间中的最大值,跟错误程序中的最短运行时间进行比较,若小于错误程序中的最短运行时间,则将其输出,否则输出-1。
代码:
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 1;
int a[N]; int i, j, n;
int cnt_max = 0;
int x[101],y[101];
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
int n,m;
cin>>n>>m;
for(i=0;i<n;++i)
cin>>x[i];
for(i=0;i<m;++i)
cin>>y[i];
sort(x,x+n);
sort(y,y+m);
int max_=max(2*x[0],x[n-1]);
if(max_<y[0])
cout<<max_;
else cout<<-1;
return 0;
}