Submission #1009110

# Submission time Handle Problem Language Result Execution time Memory
1009110 2024-06-27T08:56:02 Z ReLice Arranging Tickets (JOI17_arranging_tickets) C++14
0 / 100
5 ms 12892 KB
#include <bits/stdc++.h>
#define ll long long
#define str string
#define ins insert
#define ld long double
#define pb push_back
#define pf push_front
#define pof pop_front()
#define pob pop_back()
#define lb lower_bound
#define ub upper_bound
#define endl "\n"
#define fr first
#define sc second
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
#define sz size()
#define vll vector<ll>
#define bc back()
#define arr array
#define pll vector<pair<ll,ll>>
using namespace std;/*
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
#define ordered_set tree<ll, null_type,less_equal<ll>, rb_tree_tag,tree_order_statistics_node_update>*/
template<class S,class T>
bool chmin(S &a,const T &b) {
	return a>b?(a=b)==b:false;
}
template<class S,class T>
bool chmax(S &a,const T &b) {
	return a<b?(a=b)==b:false;
}
//void fre(string s){freopen((s+".in").c_str(),"r",stdin);freopen((s+".out").c_str(),"w",stdout);}
void start(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
}
const ll inf=1e18;
const ll mod=998244353;
const ll N=2e5+7;
const ld eps=1e-9;
vll t(N*4),add(N*4);
vector<arr<ll,3>> a;
ll n,m;
void push(ll v,ll tl,ll tr){
    if(tl!=tr){
        add[v*2]+=add[v];
        add[v*2+1]+=add[v];
    }
    t[v]+=add[v];
    add[v]=0;
}
void upd(ll l,ll r,ll val,ll v=1,ll tl=1,ll tr=N){
    push(v,tl,tr);
    if(tl>r || tr<l)return;
    if(l<=tl && tr<=r){
        add[v]+=val;
        push(v,tl,tr);
        return;
    }
    ll tm=(tl+tr)/2;
    upd(l,r,val,v*2,tl,tm);
    upd(l,r,val,v*2+1,tm+1,tr);
    t[v]=max(t[v*2],t[v*2+1]);
}
pair<ll,ll> get(ll id=0,ll v=1,ll tl=1,ll tr=N){
    if(t[v]!=t[1])return {inf,-inf};
    if(tl==tr){
        if(id==0)return {tl,tl};
        else if(id==1) return {tl,-inf};
        return {inf,tl};
    }
    ll tm=(tl+tr)/2;
    if(tl!=tr){
        push(v*2,tl,tm);
        push(v*2,tm+1,tr);
    }
    if(t[v*2]==t[1] && t[v*2+1]==t[1]){
        if(id==1)return get(id,v*2,tl,tm);
        else if(id==2)return get(id,v*2+1,tm+1,tr);
        else return {get(1,v*2,tl,tm).fr,get(2,v*2+1,tm+1,tr).sc};
    }
    else if(t[v*2]==t[1])return get(id,v*2,tl,tm);
    return get(id,v*2+1,tm+1,tr);
}
ll get2(ll l,ll r,ll v=1,ll tl=1,ll tr=N){
    push(v,tl,tr);
    if(l<=tl && tr<=r)return 0;
    if(tl>r || tr<l)return t[v];
    ll tm=(tl+tr)/2;
    return max(get2(l,r,v*2,tl,tm),get2(l,r,v*2+1,tm+1,tr));
}

bool check(ll mid){
    ll i;
    for(i=1;i<4*N;i++)t[i]=add[i]=0;
    for(i=0;i<m;i++){
        upd(a[i][0],a[i][1]-1,a[i][2]);
    }
    pair<ll,ll> p=get(),p2;
    for(i=0;i<m;i++){
        if(a[i][0]<=p.fr && a[i][1]>p.sc){
            ll x=get2(a[i][0],a[i][1]-1);
            x=(t[1]-x)/2;
            x=min(x,a[i][2]);
            if(a[i][0]>1)upd(1,a[i][0]-1,x);
            upd(a[i][1],n,x);
            upd(a[i][0],a[i][1]-1,-x);
            p2=get();
            chmin(p.fr,p2.fr);
            chmax(p.sc,p2.sc);
        }
        if(t[1]<=mid)return true;
    }
    return false;
}
void solve(){
    ll i,j;
    cin>>n>>m;
    a.resize(m);
    ll sum=0;
    for(i=0;i<m;i++){
        for(j=0;j<3;j++)cin>>a[i][j];
        if(a[i][0]>a[i][1])swap(a[i][0],a[i][1]);
        sum+=a[i][2];
    }
    sort(all(a));
    ll l=0,r=sum;
    while(l+1<r){
        ll mid=(l+r)/2;
        if(check(mid))r=mid;
        else l=mid;
    }
    cout<<r<<endl;

}
signed main(){
    start();
    ll t=1;
    //cin>>t;
    while(t--) solve();
    return 0;
}
/*





*/
# Verdict Execution time Memory Grader output
1 Correct 4 ms 12888 KB Output is correct
2 Correct 4 ms 12892 KB Output is correct
3 Correct 4 ms 12892 KB Output is correct
4 Correct 4 ms 12892 KB Output is correct
5 Correct 4 ms 12892 KB Output is correct
6 Correct 4 ms 12888 KB Output is correct
7 Correct 4 ms 12892 KB Output is correct
8 Correct 5 ms 12892 KB Output is correct
9 Correct 5 ms 12892 KB Output is correct
10 Correct 4 ms 12892 KB Output is correct
11 Correct 4 ms 12892 KB Output is correct
12 Incorrect 4 ms 12892 KB Output isn't correct
13 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 4 ms 12888 KB Output is correct
2 Correct 4 ms 12892 KB Output is correct
3 Correct 4 ms 12892 KB Output is correct
4 Correct 4 ms 12892 KB Output is correct
5 Correct 4 ms 12892 KB Output is correct
6 Correct 4 ms 12888 KB Output is correct
7 Correct 4 ms 12892 KB Output is correct
8 Correct 5 ms 12892 KB Output is correct
9 Correct 5 ms 12892 KB Output is correct
10 Correct 4 ms 12892 KB Output is correct
11 Correct 4 ms 12892 KB Output is correct
12 Incorrect 4 ms 12892 KB Output isn't correct
13 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 4 ms 12888 KB Output is correct
2 Correct 4 ms 12892 KB Output is correct
3 Correct 4 ms 12892 KB Output is correct
4 Correct 4 ms 12892 KB Output is correct
5 Correct 4 ms 12892 KB Output is correct
6 Correct 4 ms 12888 KB Output is correct
7 Correct 4 ms 12892 KB Output is correct
8 Correct 5 ms 12892 KB Output is correct
9 Correct 5 ms 12892 KB Output is correct
10 Correct 4 ms 12892 KB Output is correct
11 Correct 4 ms 12892 KB Output is correct
12 Incorrect 4 ms 12892 KB Output isn't correct
13 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 4 ms 12888 KB Output is correct
2 Correct 4 ms 12892 KB Output is correct
3 Correct 4 ms 12892 KB Output is correct
4 Correct 4 ms 12892 KB Output is correct
5 Correct 4 ms 12892 KB Output is correct
6 Correct 4 ms 12888 KB Output is correct
7 Correct 4 ms 12892 KB Output is correct
8 Correct 5 ms 12892 KB Output is correct
9 Correct 5 ms 12892 KB Output is correct
10 Correct 4 ms 12892 KB Output is correct
11 Correct 4 ms 12892 KB Output is correct
12 Incorrect 4 ms 12892 KB Output isn't correct
13 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 4 ms 12888 KB Output is correct
2 Correct 4 ms 12892 KB Output is correct
3 Correct 4 ms 12892 KB Output is correct
4 Correct 4 ms 12892 KB Output is correct
5 Correct 4 ms 12892 KB Output is correct
6 Correct 4 ms 12888 KB Output is correct
7 Correct 4 ms 12892 KB Output is correct
8 Correct 5 ms 12892 KB Output is correct
9 Correct 5 ms 12892 KB Output is correct
10 Correct 4 ms 12892 KB Output is correct
11 Correct 4 ms 12892 KB Output is correct
12 Incorrect 4 ms 12892 KB Output isn't correct
13 Halted 0 ms 0 KB -