Submission #824311

# Submission time Handle Problem Language Result Execution time Memory
824311 2023-08-14T01:14:57 Z ALeonidou Highway Tolls (IOI18_highway) C++17
0 / 100
9 ms 1232 KB
#include <bits/stdc++.h>
#include "highway.h"

using namespace std;

#define ll int
typedef vector <ll> vi;
typedef pair <ll,ll > ii;
typedef vector <ii> vii;
#define sz(x) (ll)x.size()
#define pb push_back
#define F first
#define S second
#define MID ((l+r)/2)
#define dbg(x) cout<<#x<<": "<<x<<endl;
#define dbg2(x,y) cout<<#x<<": "<<x<<" "<<#y<<": "<<y<<endl;
#define dbg3(x,y,z) cout<<#x<<": "<<x<<" "<<#y<<": "<<y<<" "<<#z<<": "<<z<<endl;

void tabb(ll n){
    for (ll i= 0; i<n; i++) cout<<"\t";
}

void printVct(vi &v){
    for (ll i=0; i<sz(v); i++){
        cout<<v[i]<<" ";
    }
    cout<<endl;
}

void printVctPair(vii &v){
    for (ll i=0; i<sz(v); i++){
        cout<<"("<<v[i].F<<","<<v[i].S<<") ";
    }
    cout<<endl;
}

void printVctPair2D(vector<vii> &adj){
    for (ll i=0; i<sz(adj); i++){
        for (ll j =0; j<sz(adj[i]); j++){
            cout<<"("<<adj[i][j].F<<","<<adj[i][j].S<<"),";
        }
        cout<<endl;
    }
    cout<<endl;
}

vector <vii> adj;
vi vis;
void dfs(ll u, ll s, ll t, ll edge, vii &canditates){
    // tabb(tab);
    // dbg3(u,s,t);
    if (s == t){
        canditates.pb(ii(u, edge));
        return;
    }
    vis[u] = 1;
    for (ll i= 0; i<sz(adj[u]); i++){
        if (!vis[adj[u][i].F]){
            dfs(adj[u][i].F, s+1, t, adj[u][i].S, canditates);
        }
    }
}

void find_pair(int n, vi V, vi U, int a,int b) {
    //subtask 1+2
    ll m = sz(U);
    //dbg2(n,m);
    adj.assign(n, vii());
    for (ll i=0; i<m ;i++){
        //dbg2(U[i], V[i]);
        adj[U[i]].pb(ii(V[i], i));
        adj[V[i]].pb(ii(U[i], i));
    }
    //printVctPair2D(adj);
    
    vi v(m, 0);
    long long f = ask(v);
    ll dis = f / a;
    
    vii canditates;     //(node, edge)
    vis.assign(n, 0);
    dfs(0, 0, dis, 0, canditates);

    printVctPair(canditates);

    ll l = 0, r = sz(canditates)-1,mid;
    while (l < r){
        mid  = MID;
        dbg3(l,r,mid);
        v.assign(m,0);
        for (ll i = 0; i<=mid; i++){    //select left part
            v[canditates[i].S] = 1;
        }

        //printVct(v);

        ll cur = ask(v);

        if (cur > f){
            r  = mid;
        }
        else{
           l = mid+1;
        }  
    }
    ll t = canditates[l].F;
    dbg(t);
    answer(0, t);
}

/*
14 13 2 5 0 13
0 1
1 5
1 4
1 2
2 3
5 7
7 8
5 6
3 12
3 11
2 9
9 10
9 13

*/
# Verdict Execution time Memory Grader output
1 Runtime error 1 ms 256 KB Execution killed with signal 13
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 1 ms 336 KB Execution killed with signal 13
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 9 ms 976 KB DO NOT PRINT ANYTHING TO STANDARD OUTPUT
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 1 ms 336 KB Execution killed with signal 13
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 8 ms 1232 KB Execution killed with signal 13
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 7 ms 1104 KB Execution killed with signal 13
2 Halted 0 ms 0 KB -