Submission #918901

#TimeUsernameProblemLanguageResultExecution timeMemory
918901Haidara314Just Long Neckties (JOI20_ho_t1)C++17
100 / 100
82 ms10948 KiB
/*#pragma GCC optimize("Ofast")
#pragma GCC target("avx2")*/
#include <bits/stdc++.h>

using namespace std;
#define endl '\n'
#define ll long long
#define ll1 __int128
#define mid l+(r-l)/2
#define ya cout<<"YES"<<endl;
#define na cout<<"NO"<<endl;
#define all(x) (x).begin(), (x).end()
#define F first
#define S second
#define sz(x) (int)x.size()
#define pb push_back
#define pp pop_back();
#define C complex<ll>
#define R real()
#define I imag()
ll cross(C x,C y)
{
    return (conj(x)*y).I;
}
ll dot(C x,C y)
{
    return (conj(x)*y).R;
}
//abs(v) length of vector v
//arg(v) the angle of vector v in radians
//n polar(s,a) constructs a vector whose length is s and that points to an angle a
//rotate(vec.begin(), vec.begin() + k, vec.end());
//set<int> S(all(a));
/*if (S.count(key)) {
    // ...
}*/
/*if (binary_search(all(vec), key)) {
    // ...
}*/
//int pos = partition_point(all(vec), p) - vec.begin();
//Print a binary representation of a number cout << bitset<20>(n) << "\n";
int nxt()
{
    int x;
    cin >> x;
    return x;
}
ll1 lcm(ll1 x,ll1 y)
{
    return (x*y)/__gcd(x,y);
}
ll M=1000000007;
ll fp(ll x,ll y)
{
    if(y==0)
        return 1;
    ll m=fp(x,y/2);
    m*=m;
    m%=M;
    if(y%2==1)
        m*=x;
    m%=M;
    return m;
}
ll lg10(ll x)
{
    int o=0;
    while(x)
    {
        x/=10;
        o++;
    }
    return o;
}
int msb(int k)
{
    int g=__builtin_clz(k);
    return 31-g;
}
//vector<int>sv(100005);
/*ll m[1000005];
vector<int>divi[100005];
vector<int>p;
int y[100005];
void divg(int j,int i,int o,int c)
{
   if(i==p.size())
   {
       if(o!=1)
       divi[j][c].push_back(o);
       return;
   }
   divg(j,i+1,o*p[i],c+1);
   divg(j,i+1,o,c);
}*/
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    /*freopen("problemname.in", "r", stdin);
	freopen("problemname.out", "w", stdout);*/
    /*for(int i=2;i<=100005;i++)
    {
        if(!sv[i])
        {
            for(int j=i;j<=100005;j+=i)
                sv[j]=i;
        }
    }*/
    int n;
    cin>>n;
    int a[n+5];
    int b[n];
    for(int i=0;i<=n;i++)
        cin>>a[i];
    for(int i=0;i<n;i++)
        cin>>b[i];
    vector<pair<int,int>>p;
    for(int i=0;i<=n;i++)
    {
        p.push_back({a[i],i});
    }
    int c[n+5];
    sort(all(p));
    sort(b,b+n);
    int x[n];
    int o=0;
    for(int i=0;i<n;i++)
    {
        x[i]=max(o,max(0,p[i].F-b[i]));
        o=x[i];
    }
    c[p[n].S]=o;
    int h=0;
    for(int i=n-1;i>=0;i--)
    {
        h=max(h,max(0,p[i+1].F-b[i]));
        if(i!=0)
        c[p[i].S]=max(h,x[i-1]);
        else
        c[p[i].S]=h;
    }
    for(int i=0;i<=n;i++)
        cout<<c[i]<<" ";
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...