Submission #1322828

#TimeUsernameProblemLanguageResultExecution timeMemory
1322828alikhanMP3 Player (CEOI10_mp3player)C++20
10 / 100
1095 ms1124 KiB
#include <bits/stdc++.h>
// #pragma GCC optimize("O3")
// #pragma GCC target("avx2")
#define forn for(int i=1;i<=n;i++)
#define Yes cout<<"Yes\n"
#define No cout<<"No\n"
#define YES cout<<"YES\n"
#define NO cout<<"NO\n"
#define pb push_back
#define sp setprecision
#define all(v) v.begin(),v.end()
#define rall(v) v.rbegin(),v.rend()
#define int long long
#define ll long long
#define nn '\n'

using namespace std;
const int N=1e6;
const int M=105*105;
const int INF=1e18;
const int MOD=1e9+7;
int n;
int V,V2;
char c[N];
int a[N];
int check(int mid){
    for(int v1=V;v1>=0;v1--){
        int x=v1;
        for(int i=2;i<=n;i++){ 
            if(a[i]-a[i-1]<=mid) {
                if(c[i]=='+') x++;
                else x--;
                x=max(0ll,x);
                x=min(x,V);
            }
        }
        if(x==V2) return v1;
    }
    return 0;
}
void al(){
    cin>>n>>V>>V2;
    for(int i=1;i<=n;i++){
        cin>>c[i]>>a[i];
    }
    int l=0,r=INF;
    int ans=0;
    while(l<r){
        int mid=(l+r)/2;
        if(check(mid)){
            l=mid+1;
            ans=mid;
            // cout<<mid<<' '<<check(mid)<<'\n';
        }
        else r=mid-1;
    }
    if(l==INF) cout<<"infinity";
    else cout<<ans<<' '<<check(ans)<<'\n';
}
/*
5 1 0
a a с с с с 
2 2 0 0 0 0 
4
8
*/
signed main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    // cout.tie(0);
    int t=1;
    // cin>>t;	
    while(t--) {
        al();
    }	
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...