Submission #1217646

#TimeUsernameProblemLanguageResultExecution timeMemory
1217646cpdreamer기지국 (IOI20_stations)C++20
76 / 100
305 ms580 KiB
#include "stations.h"
#include <bits/stdc++.h>
using namespace std;
const long long INF = 1e17;
typedef long long ll;
const ll MOD = (ll)1e9+7;
#define P pair
#define S second
#define F first
#define pb push_back
#define V vector
#define all(v) v.begin(), v.end()
V<int>adj[(int)1000];
V<P<int,int>>vp(1000);
int dep[1000];
int cnt=0;
void dfs(int n,int p) {
    vp[n].F=cnt;
    for (auto u:adj[n]) {
        if(u==p)continue;
        cnt++;
        dep[u]=dep[n]+1;
        dfs(u,n);
    }
    cnt++;
    vp[n].S=cnt;
}
std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) {
    cnt=0;
    dep[0]=0;
    for (int i=0;i<n-1;i++) {
        adj[u[i]].pb(v[i]);
        adj[v[i]].pb(u[i]);
    }
    dfs(0,-1);
    V<int>l(n);
    for (int i=0;i<n;i++) {
        if (dep[i]%2==0) {
            l[i]=vp[i].F;
        }
        else
            l[i]=vp[i].S;
    }
    for (int i=0;i<n;i++) {
        adj[i].clear();
    }
    return l;
}
int find_next_station(int s, int t, std::vector<int> c) {
    int sz=(int)c.size();
    if (s==0) {
        P<int,int>b[sz];
        for (int i=0;i<sz;i++) {
            if (i==0) {
                b[i].F=1;
                b[i].S=c[i];
            }
            else {
                b[i].F=c[i-1]+1;
                b[i].S=c[i];
            }
        }
        for (int i=0;i<sz;i++) {
            if (t>=b[i].F && t<=b[i].S) {
                return c[i];
            }
        }
    }
    else {
        if (c[0]<s) {
            P<int,int>b[sz];
            for (int i=1;i<sz;i++) {
                if (i==sz-1) {
                    b[i].F=c[i];
                    b[i].S=s-1;
                }
                else {
                    b[i].F=c[i];
                    b[i].S=c[i+1]-1;
                }
            }
            for (int i=1;i<sz;i++) {
                if (b[i].F<=t && t<=b[i].S) {
                    return c[i];
                }
            }
            return c[0];
        }
        P<int,int>b[sz];
        for (int i=0;i<sz-1;i++) {
            if (i==0) {
                b[i].F=s+1;
                b[i].S=c[i];
            }
            else {
                b[i].F=c[i-1]+1;
                b[i].S=c[i];
            }
        }
        for (int i=0;i<sz-1;i++) {
            if (t>=b[i].F && t<=b[i].S) {
                return c[i];
            }
        }
        return c[sz-1];
    }
}

Compilation message (stderr)

stations.cpp: In function 'int find_next_station(int, int, std::vector<int>)':
stations.cpp:107:1: warning: control reaches end of non-void function [-Wreturn-type]
  107 | }
      | ^
#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...