Submission #1168764

#TimeUsernameProblemLanguageResultExecution timeMemory
1168764sitablechair기지국 (IOI20_stations)C++20
0 / 100
299 ms580 KiB
#include <bits/stdc++.h>
#include "stations.h"

#define ll long long
#define ldb long double
#define endl '\n'
#define For(i,l,r) for(int i=l;i<=r;i++)
#define ForD(i,r,l) for(int i=r;i>=l;i--)
#define ff first
#define ss second
#define pb push_back
#define all(x) x.begin(),x.end()
#define sz(x) (signed)x.size()
#define unq(x) x.resize(unique(all(x))-x.begin())
#define F "TASK"
#define fio freopen(F".INP","r",stdin);freopen(F".OUT","w",stdout);

using namespace std;

const int N=1003;

int tdfs=0,tin[N*2],tout[N*2],d[N];
vector<int> big,ans,g[N];

void dfs(int u,int p=0) {
    tin[u]=++tdfs;
    for(auto v: g[u])
        if (v!=p) {
            d[v]=d[u]+1;
            dfs(v,u);
        }
    tout[u]=++tdfs;
}

vector<int> label(int n,int k,vector<int> u,vector<int> v) {
    ans.resize(n);
    For(i,0,n-1) g[i].clear();
    big.clear();
    tdfs=0;
    For(i,0,n-2) {
        g[u[i]].pb(v[i]);
        g[v[i]].pb(u[i]);
    }
    dfs(0);
    For(i,0,n-1)
        if (d[i]&1) big.pb(tin[i]);
        else big.pb(tout[i]);
    sort(all(big));
    unq(big);
    For(i,0,n-1)
        if (d[i]&1) ans[i]=lower_bound(all(big),tin[i])-big.begin();
        else ans[i]=lower_bound(all(big),tout[i])-big.begin();
    return ans;
}
int find_next_station(int s,int t,vector<int> c) {
    bool check=1;
    sort(all(c));
    for(auto u: c) {
        if (t==u) return t;
        if (u>s) check=0;
    }
    if (sz(c)==1) return c.back();
    if (check) {
        int mi=*min_element(all(c));
        int mi1=2e9;
        for(auto u: c)
            if (u!=mi && u<mi1) mi1=u;
        if (t<s && t>mi1) {
            for(int i=0;i<sz(c);i++) {
                int nxt=(i==sz(c)-1?s-1:c[i+1]-1);
                if (t>c[i] && t<nxt) return c[i];
            }
        } else return mi;
    } else {
        int ma=*max_element(all(c));
        int ma1=-2e9;
        for(auto u: c)
            if (u!=ma && u>ma1) ma1=u;
        if (t>s && t<ma1) {
            for(int i=0;i<sz(c);i++) {
                int prv=(i==0?s+1:c[i-1]+1);
                if (t>prv && t<c[i]) return c[i];
            }
        } else return ma;
    }
}

/*int r,n,k,q;
vector<int> lb,u1,v1;

void solve() {
    cin >> n >> k;
    u1.resize(n);
    v1.resize(n);
    For(i,1,n-1)
        cin >> u1[i] >> v1[i];
    cin >> q;
    lb=label(n,k,u1,v1);
    while(q--) {
        int z,y;
        cin >> z >> y;
        cout << find_next_station(z,y,g[z]) << endl;
    }
}

int main() {
    cin.tie(0)->sync_with_stdio(0);
    cin >> r;
    while(r--) solve();
    return 0;
}*/

Compilation message (stderr)

stations.cpp: In function 'int find_next_station(int, int, std::vector<int>)':
stations.cpp:86:1: warning: control reaches end of non-void function [-Wreturn-type]
   86 | }
      | ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...