Submission #1323121

#TimeUsernameProblemLanguageResultExecution timeMemory
1323121yerkoshMP3 Player (CEOI10_mp3player)C++20
40 / 100
372 ms2000 KiB
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define pb push_back
#define inf 1e18+1e9
#define F first
#define S second
#define int long long
#define mod (int)(1e9+7)
#define maxn 1000100
#define pii pair<int,int>
#define mod2 998244353
const int maxtime=1e8;
const long double eps=1e-9;
ld dist(ld x1,ld y1,ld x2,ld y2) {
    return sqrt(abs(x1-x2)*abs(x1-x2)+abs(y1-y2)*abs(y1-y2));
}

pair<char,int> a[maxn];
int c[maxn],d[maxn];
int n,vm,v2;
int get2(int sum,int x) {
    for (int i=2;i<=n;i++) {
        if (a[i].S-a[i-1].S<=x) {
            if (a[i].F=='+') {
                if (sum<vm)sum++;
            }else {
                if (sum>0)sum--;
            }
        }
    }
    return sum;
}
int get(int x) {
    int l=0,r=vm,res=-1;
    while(l<=r) {
        int mid=(l+r)>>1;
        int sum=get2(mid,x);
        if (sum==v2) {
            res=mid;
        }
        if (sum<=v2) {
            l=mid+1;
        }else {
            r=mid-1;
        }
    }
    return res;
}

void solve () {
    cin>>n>>vm>>v2;
    for (int i=1;i<=n;i++)cin>>a[i].F>>a[i].S;
    int l=0,r=inf,t=0,v1=0;
    while (l<=r) {
        int mid=(l+r)>>1;
        int ans=get(mid);
        if (ans>-1) {
            l=mid+1;
            t=mid;
            v1=ans;
        }
        else r=mid-1;
    }
    if (t==inf) {
        cout<<"infinity";
    }else {
        cout<<t<<" "<<v1;
    }
}
int32_t main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    int t=1;
    // cin>>t;
    for (int ii=1;ii<=t;ii++) {
        solve();
        // asd();
        if (ii<t)cout<<"\n";
    }
}
#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...