A.
找最后一个ac点能在哪个时间段
// Problem: A. The Contest
// Contest: Codeforces - Educational Codeforces Round 22
// URL: https://codeforces.com/group/RAx5fiilkP/contest/813/problem/A
// Memory Limit: 256 MB
// Time Limit: 2000 ms
//
// Powered by CP Editor (https://cpeditor.org)
#include<bits/stdc++.h>
#define eps 1e-5
#define INF 1e9
using namespace std;
typedef long long ll;
const int N = 2e6 + 9;
int a[N],l[N],r[N];
void Lan(){
int n;
cin>>n;
int sum=0;
while(n--){
int x;
cin>>x;
sum+=x;
}
int m;
cin>>m;
while(m--){
int x,y;
cin>>x>>y;
if(y>=sum){
cout<<max(sum,x)<<'\n';
return;
}
}
cout<<-1<<'\n';
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
int q=1;
while (q--) {
Lan();
}
return 0;
}
B.
枚举每个满足的点,排序找最大,注意不要超过ll
// Problem: B. The Golden Age
// Contest: Codeforces - Educational Codeforces Round 22
// URL: https://codeforces.com/group/RAx5fiilkP/contest/813/problem/B
// Memory Limit: 256 MB
// Time Limit: 1000 ms
//
// Powered by CP Editor (https://cpeditor.org)
#include<bits/stdc++.h>
#define eps 1e-5
#define INF 1e5
using namespace std;
typedef long long ll;
const int N = 2e6 + 9;
void Lan(){
ll x,y;
cin>>x>>y;
ll l,r;
cin>>l>>r;
vector<ll> v;
for(ll i=1;;i*=x){
for(ll j=1;;j*=y){
if((i+j)<=r && (i+j)>=l){
v.push_back(i+j);
}
if(y>r/j){//防止超过ll范围,也可以理解为优化
break;
}
}
if(x>r/i){//防止超过ll范围
break;
}
}
sort(v.begin(),v.end());
if(!v.size()){
cout<<r-l+1<<'\n';
}else{
ll ans=max(v[0]-l,r-v[v.size()-1]);
for(int i=1;i<v.size();i++){
ans=max(ans,v[i]-v[i-1]-1);
}
cout<<ans<<'\n';
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
int q=1;
while (q--) {
Lan();
}
return 0;
}