Submission #1230295

#TimeUsernameProblemLanguageResultExecution timeMemory
1230295Tenis0206Measures (CEOI22_measures)C++20
59 / 100
140 ms5192 KiB
#include <bits/stdc++.h>
#define int long long

using namespace std;

const int nmax = 2e5;

int n, m, d;
int a[nmax + 5], b[nmax + 5];

void print(int val)
{
    if(val % 2 == 0)
    {
        cout<<val/2<<' ';
    }
    else
    {
        double p = 0.5 * val;
        cout<<fixed<<setprecision(1);
        cout<<p<<' ';
    }
}

signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
#ifdef home
    freopen("nr.in","r",stdin);
    freopen("nr.out","w",stdout);
#endif // home
    cin>>n>>m>>d;
    d *= 2;
    if(m > 10)
    {
        for(int i=1; i<=n; i++)
        {
            cin>>a[i];
            a[i] *= 2;
        }
        for(int i=1; i<=m; i++)
        {
            cin>>b[i];
            b[i] *= 2;
            b[i] += 1LL * (m - i) * d;
        }
        int t = 0;
        int last = -d;
        for(int i=1; i<=m; i++)
        {
            if(b[i] + t >= last)
            {
                last = max(last, b[i] - t);
                print(t);
                continue;
            }
            t += (last - (b[i] + t)) / 2;
            last = b[i] + t;
            print(t);
        }
        return 0;
    }
    vector<int> v;
    for(int i=1;i<=n;i++)
    {
        int x;
        cin>>x;
        x *= 2;
        v.push_back(x);
    }
    for(int p=1;p<=m;p++)
    {
        int x;
        cin>>x;
        x *= 2;
        v.push_back(x);
        sort(v.begin(), v.end());
        for(int i=0;i<v.size();i++)
        {
            v[i] += 1LL * (v.size() - i) * d;
        }
        int t = 0;
        int last = -d;
        for(int i=0;i<v.size();i++)
        {
            if(v[i] + t >= last)
            {
                last = max(last, v[i] - t);
                continue;
            }
            t += (last - (v[i] + t)) / 2;
            last = v[i] + t;
        }
        print(t);
        for(int i=0;i<v.size();i++)
        {
            v[i] -= 1LL * (v.size() - i) * d;
        }
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...