Submission #568945

# Submission time Handle Problem Language Result Execution time Memory
568945 2022-05-26T11:23:23 Z zaneyu Two Transportations (JOI19_transportations) C++14
100 / 100
900 ms 72304 KB
#include "Azer.h"
#include<bits/stdc++.h>
using namespace std;
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
typedef tree<long long,null_type,less_equal<long long>,rb_tree_tag,tree_order_statistics_node_update> indexed_set;
#pragma GCC optimize("Ofast")
//#pragma GCC target("avx2")
//order_of_key #of elements less than x
// find_by_order kth element
using ll=long long;
using ld=long double;
using pii=pair<int,int>;
#define f first
#define s second
#define pb push_back
#define REP(i,n) for(int i=0;i<n;i++)
#define REP1(i,n) for(int i=1;i<=n;i++)
#define FILL(n,x) memset(n,x,sizeof(n))
#define ALL(_a) _a.begin(),_a.end()
#define sz(x) (int)x.size()
#define SORT_UNIQUE(c) (sort(c.begin(),c.end()),c.resize(distance(c.begin(),unique(c.begin(),c.end()))))
const ll maxn=5e5+5;
const ll maxlg=__lg(maxn)+2;
const ll INF64=4e18;
const int INF=0x3f3f3f3f;
const int MOD=1e9+7;
const ld PI=acos(-1);
const ld eps=1e-6;
#define lowb(x) x&(-x)
#define MNTO(x,y) x=min(x,(__typeof__(x))y)
#define MXTO(x,y) x=max(x,(__typeof__(x))y)
template<typename T1,typename T2>
ostream& operator<<(ostream& out,pair<T1,T2> P){
    out<<P.f<<' '<<P.s;
    return out;
}
template<typename T>
ostream& operator<<(ostream& out,vector<T> V){
    REP(i,sz(V)) out<<V[i]<<((i!=sz(V)-1)?" ":"");
    return out;
}
namespace {

    int n;
    vector<pii> v[maxn];
    int dist[maxn];
    priority_queue<pii,vector<pii>,greater<pii>> pq;
    bool done[maxn];
    void relax(int u){
        done[u]=1;
        for(auto x:v[u]){
            MNTO(dist[x.f],dist[u]+x.s);
        }
    }
    int cnt,idx,mn,p,pv;
    int val=0;
    void send(){
        mn=INF+1;
        REP(i,n){
            if(!done[i]){
                if(mn>dist[i]){
                    mn=dist[i];
                    p=i;
                }
            }
        }
        if(mn==INF+1){
            return;
        }
        mn-=pv;
        MNTO(mn,511);
        REP(i,9) SendA((mn>>(8-i))&1);
        idx=1;
    }
}  

void InitA(int N, int A, std::vector<int> U, std::vector<int> V,
           std::vector<int> C) {
    n=N;
    REP(i,A){
        v[U[i]].pb({V[i],C[i]});
        v[V[i]].pb({U[i],C[i]});
    }
    REP(i,n) dist[i]=INF;
    dist[0]=0;
    pv=0;
    relax(0);
    send();
}
void ReceiveA(bool x) {
    val=val*2+x;
    ++cnt;
    if(idx==1){
        if(cnt==9){
            if(mn<=val){
                REP(i,11) SendA((p>>(10-i))&1);
                pv+=mn;
                relax(p);
                send();
            }
            else{
                pv+=val;
                idx=2;
            }
            cnt=0;
            val=0;
        }
    }
    else if(idx==2){
        if(cnt==11){
            dist[val]=pv;
            relax(val);
            send();
            cnt=0;
            val=0;
        }
    }
}

std::vector<int> Answer() {
    vector<int> ans;
    REP(i,n) ans.pb(dist[i]);
    return ans;
}
#include "Baijan.h"
#include<bits/stdc++.h>
using namespace std;
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
typedef tree<long long,null_type,less_equal<long long>,rb_tree_tag,tree_order_statistics_node_update> indexed_set;
#pragma GCC optimize("Ofast")
//#pragma GCC target("avx2")
//order_of_key #of elements less than x
// find_by_order kth element
using ll=long long;
using ld=long double;
using pii=pair<int,int>;
#define f first
#define s second
#define pb push_back
#define REP(i,n) for(int i=0;i<n;i++)
#define REP1(i,n) for(int i=1;i<=n;i++)
#define FILL(n,x) memset(n,x,sizeof(n))
#define ALL(_a) _a.begin(),_a.end()
#define sz(x) (int)x.size()
#define SORT_UNIQUE(c) (sort(c.begin(),c.end()),c.resize(distance(c.begin(),unique(c.begin(),c.end()))))
const ll maxn=5e5+5;
const ll maxlg=__lg(maxn)+2;
const ll INF64=4e18;
const int INF=0x3f3f3f3f;
const int MOD=1e9+7;
const ld PI=acos(-1);
const ld eps=1e-6;
#define lowb(x) x&(-x)
#define MNTO(x,y) x=min(x,(__typeof__(x))y)
#define MXTO(x,y) x=max(x,(__typeof__(x))y)
template<typename T1,typename T2>
ostream& operator<<(ostream& out,pair<T1,T2> P){
    out<<P.f<<' '<<P.s;
    return out;
}
template<typename T>
ostream& operator<<(ostream& out,vector<T> V){
    REP(i,sz(V)) out<<V[i]<<((i!=sz(V)-1)?" ":"");
    return out;
}
namespace {

    int n;
    vector<pii> v[maxn];
    int dist[maxn];
    priority_queue<pii,vector<pii>,greater<pii>> pq;
    bool done[maxn];
    void relax(int u){
        done[u]=1;
        for(auto x:v[u]){
            MNTO(dist[x.f],dist[u]+x.s);
        }
    }
    int cnt,idx,mn,p,pv;
    int val=0;
    void send(){
        mn=INF+1;
        REP(i,n){
            if(!done[i]){
                if(mn>dist[i]){
                    mn=dist[i];
                    p=i;
                }
            }
        }
        if(mn==INF+1){
            return;
        }
        mn-=pv;
        MNTO(mn,511);
        REP(i,9) SendB((mn>>(8-i))&1);
        idx=1;
    }
}
void InitB(int N, int B, std::vector<int> S, std::vector<int> T,
           std::vector<int> D) {
    n=N;
    REP(i,B){
        v[S[i]].pb({T[i],D[i]});
        v[T[i]].pb({S[i],D[i]});
    }
    REP(i,n) dist[i]=INF;
    dist[0]=0;
    pv=0;
    relax(0);
    send();
}
void ReceiveB(bool y) {
    val=val*2+y;
    ++cnt;
    if(idx==1){
        if(cnt==9){
            if(mn<val){
                REP(i,11) SendB((p>>(10-i))&1);
                pv+=mn;
                relax(p);
                send();
            }
            else{
                pv+=val;
                idx=2;
            }
            cnt=0;
            val=0;
        }
    }
    else if(idx==2){
        if(cnt==11){
            dist[val]=pv;
            relax(val);
            send();
            cnt=0;
            val=0;
        }
    }
}
# Verdict Execution time Memory Grader output
1 Correct 515 ms 24144 KB Output is correct
2 Correct 14 ms 23928 KB Output is correct
3 Correct 483 ms 24144 KB Output is correct
4 Correct 636 ms 33504 KB Output is correct
5 Correct 37 ms 24208 KB Output is correct
6 Correct 546 ms 25608 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 16 ms 23952 KB Output is correct
2 Correct 505 ms 24228 KB Output is correct
3 Correct 508 ms 24288 KB Output is correct
4 Correct 607 ms 50932 KB Output is correct
5 Correct 559 ms 47488 KB Output is correct
6 Correct 119 ms 24012 KB Output is correct
7 Correct 642 ms 47800 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 472 ms 24208 KB Output is correct
2 Correct 14 ms 23952 KB Output is correct
3 Correct 454 ms 24100 KB Output is correct
4 Correct 480 ms 24344 KB Output is correct
5 Correct 444 ms 24224 KB Output is correct
6 Correct 452 ms 24216 KB Output is correct
7 Correct 446 ms 24108 KB Output is correct
8 Correct 501 ms 24152 KB Output is correct
9 Correct 524 ms 24148 KB Output is correct
10 Correct 479 ms 24152 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 214 ms 24036 KB Output is correct
2 Correct 240 ms 24060 KB Output is correct
3 Correct 273 ms 36660 KB Output is correct
4 Correct 236 ms 24248 KB Output is correct
5 Correct 300 ms 33456 KB Output is correct
6 Correct 204 ms 24044 KB Output is correct
7 Correct 206 ms 24096 KB Output is correct
8 Correct 220 ms 24208 KB Output is correct
9 Correct 343 ms 41464 KB Output is correct
10 Correct 295 ms 41592 KB Output is correct
11 Correct 441 ms 58996 KB Output is correct
12 Correct 331 ms 54040 KB Output is correct
13 Correct 256 ms 24208 KB Output is correct
14 Correct 14 ms 23952 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 214 ms 24036 KB Output is correct
2 Correct 240 ms 24060 KB Output is correct
3 Correct 273 ms 36660 KB Output is correct
4 Correct 236 ms 24248 KB Output is correct
5 Correct 300 ms 33456 KB Output is correct
6 Correct 204 ms 24044 KB Output is correct
7 Correct 206 ms 24096 KB Output is correct
8 Correct 220 ms 24208 KB Output is correct
9 Correct 343 ms 41464 KB Output is correct
10 Correct 295 ms 41592 KB Output is correct
11 Correct 441 ms 58996 KB Output is correct
12 Correct 331 ms 54040 KB Output is correct
13 Correct 256 ms 24208 KB Output is correct
14 Correct 14 ms 23952 KB Output is correct
15 Correct 220 ms 24044 KB Output is correct
16 Correct 210 ms 24080 KB Output is correct
17 Correct 274 ms 24080 KB Output is correct
18 Correct 329 ms 33472 KB Output is correct
19 Correct 237 ms 24208 KB Output is correct
20 Correct 279 ms 33768 KB Output is correct
21 Correct 305 ms 24216 KB Output is correct
22 Correct 247 ms 24224 KB Output is correct
23 Correct 421 ms 45552 KB Output is correct
24 Correct 406 ms 45564 KB Output is correct
25 Correct 578 ms 67064 KB Output is correct
26 Correct 449 ms 59704 KB Output is correct
27 Correct 211 ms 24236 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 214 ms 24036 KB Output is correct
2 Correct 240 ms 24060 KB Output is correct
3 Correct 273 ms 36660 KB Output is correct
4 Correct 236 ms 24248 KB Output is correct
5 Correct 300 ms 33456 KB Output is correct
6 Correct 204 ms 24044 KB Output is correct
7 Correct 206 ms 24096 KB Output is correct
8 Correct 220 ms 24208 KB Output is correct
9 Correct 343 ms 41464 KB Output is correct
10 Correct 295 ms 41592 KB Output is correct
11 Correct 441 ms 58996 KB Output is correct
12 Correct 331 ms 54040 KB Output is correct
13 Correct 256 ms 24208 KB Output is correct
14 Correct 14 ms 23952 KB Output is correct
15 Correct 220 ms 24044 KB Output is correct
16 Correct 210 ms 24080 KB Output is correct
17 Correct 274 ms 24080 KB Output is correct
18 Correct 329 ms 33472 KB Output is correct
19 Correct 237 ms 24208 KB Output is correct
20 Correct 279 ms 33768 KB Output is correct
21 Correct 305 ms 24216 KB Output is correct
22 Correct 247 ms 24224 KB Output is correct
23 Correct 421 ms 45552 KB Output is correct
24 Correct 406 ms 45564 KB Output is correct
25 Correct 578 ms 67064 KB Output is correct
26 Correct 449 ms 59704 KB Output is correct
27 Correct 211 ms 24236 KB Output is correct
28 Correct 312 ms 24064 KB Output is correct
29 Correct 235 ms 24148 KB Output is correct
30 Correct 488 ms 47356 KB Output is correct
31 Correct 302 ms 24056 KB Output is correct
32 Correct 477 ms 44536 KB Output is correct
33 Correct 255 ms 24216 KB Output is correct
34 Correct 368 ms 24252 KB Output is correct
35 Correct 301 ms 24248 KB Output is correct
36 Correct 382 ms 48116 KB Output is correct
37 Correct 430 ms 48124 KB Output is correct
38 Correct 594 ms 72304 KB Output is correct
39 Correct 539 ms 67624 KB Output is correct
40 Correct 365 ms 24260 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 515 ms 24144 KB Output is correct
2 Correct 14 ms 23928 KB Output is correct
3 Correct 483 ms 24144 KB Output is correct
4 Correct 636 ms 33504 KB Output is correct
5 Correct 37 ms 24208 KB Output is correct
6 Correct 546 ms 25608 KB Output is correct
7 Correct 16 ms 23952 KB Output is correct
8 Correct 505 ms 24228 KB Output is correct
9 Correct 508 ms 24288 KB Output is correct
10 Correct 607 ms 50932 KB Output is correct
11 Correct 559 ms 47488 KB Output is correct
12 Correct 119 ms 24012 KB Output is correct
13 Correct 642 ms 47800 KB Output is correct
14 Correct 472 ms 24208 KB Output is correct
15 Correct 14 ms 23952 KB Output is correct
16 Correct 454 ms 24100 KB Output is correct
17 Correct 480 ms 24344 KB Output is correct
18 Correct 444 ms 24224 KB Output is correct
19 Correct 452 ms 24216 KB Output is correct
20 Correct 446 ms 24108 KB Output is correct
21 Correct 501 ms 24152 KB Output is correct
22 Correct 524 ms 24148 KB Output is correct
23 Correct 479 ms 24152 KB Output is correct
24 Correct 214 ms 24036 KB Output is correct
25 Correct 240 ms 24060 KB Output is correct
26 Correct 273 ms 36660 KB Output is correct
27 Correct 236 ms 24248 KB Output is correct
28 Correct 300 ms 33456 KB Output is correct
29 Correct 204 ms 24044 KB Output is correct
30 Correct 206 ms 24096 KB Output is correct
31 Correct 220 ms 24208 KB Output is correct
32 Correct 343 ms 41464 KB Output is correct
33 Correct 295 ms 41592 KB Output is correct
34 Correct 441 ms 58996 KB Output is correct
35 Correct 331 ms 54040 KB Output is correct
36 Correct 256 ms 24208 KB Output is correct
37 Correct 14 ms 23952 KB Output is correct
38 Correct 220 ms 24044 KB Output is correct
39 Correct 210 ms 24080 KB Output is correct
40 Correct 274 ms 24080 KB Output is correct
41 Correct 329 ms 33472 KB Output is correct
42 Correct 237 ms 24208 KB Output is correct
43 Correct 279 ms 33768 KB Output is correct
44 Correct 305 ms 24216 KB Output is correct
45 Correct 247 ms 24224 KB Output is correct
46 Correct 421 ms 45552 KB Output is correct
47 Correct 406 ms 45564 KB Output is correct
48 Correct 578 ms 67064 KB Output is correct
49 Correct 449 ms 59704 KB Output is correct
50 Correct 211 ms 24236 KB Output is correct
51 Correct 312 ms 24064 KB Output is correct
52 Correct 235 ms 24148 KB Output is correct
53 Correct 488 ms 47356 KB Output is correct
54 Correct 302 ms 24056 KB Output is correct
55 Correct 477 ms 44536 KB Output is correct
56 Correct 255 ms 24216 KB Output is correct
57 Correct 368 ms 24252 KB Output is correct
58 Correct 301 ms 24248 KB Output is correct
59 Correct 382 ms 48116 KB Output is correct
60 Correct 430 ms 48124 KB Output is correct
61 Correct 594 ms 72304 KB Output is correct
62 Correct 539 ms 67624 KB Output is correct
63 Correct 365 ms 24260 KB Output is correct
64 Correct 408 ms 24316 KB Output is correct
65 Correct 524 ms 49852 KB Output is correct
66 Correct 631 ms 46768 KB Output is correct
67 Correct 455 ms 24288 KB Output is correct
68 Correct 432 ms 24316 KB Output is correct
69 Correct 900 ms 71020 KB Output is correct
70 Correct 880 ms 62912 KB Output is correct
71 Correct 558 ms 28420 KB Output is correct
72 Correct 435 ms 24524 KB Output is correct