Submission #43212

# Submission time Handle Problem Language Result Execution time Memory
43212 2018-03-10T22:21:44 Z smu201111192 버스 (JOI14_bus) C++14
35 / 100
327 ms 86456 KB
#include <iostream>
#include <cstdio>
#include <cassert>
#include <bitset>
#include <string>
#include <sstream>
#include <algorithm>
#include <set>
#include <numeric>
#include <cmath>
#include <map>
#include <vector>
#include <queue>
#include <stack>
#include <cstring>
#include <queue>
#include <numeric>
#include <iomanip>
#define ll long long
using namespace std;
const int MAXN = 100005;
const int MAXV = 1000005;
int n,m,id = 0;
map<pair<int,int>,int> dict;
pair<int,int> cv[MAXV];
vector<int> adj[MAXV];
vector<int> node[MAXN];
struct edge{
    int u,v,st,ed;
    void read(){cin>>u>>v>>st>>ed;}
}e[MAXN];
int dp[MAXV];
void addEdge(int u,int v){
    adj[u].push_back(v);
}
int go(int cur){
    if(cv[cur].first == n) return cv[cur].second;
    if(dp[cur] != -1) return dp[cur];
    dp[cur] = 2e9;
    for(auto &x : adj[cur]){
        dp[cur] = min(dp[cur],go(x));
    }
    return dp[cur];
}
int main(){
    ios::sync_with_stdio(false); cin.tie(0);
    cin >> n >> m;
    node[1].push_back(0);
    for(int i = 1; i <= m; i++){
        e[i].read();
        dict[make_pair(e[i].u,e[i].st)];
        dict[make_pair(e[i].v,e[i].ed)];
        assert(dict.size() < MAXV);
        node[e[i].u].push_back(e[i].st);
        node[e[i].v].push_back(e[i].ed);
    }
    for(int i = 1; i <= n; i++) {
        sort(node[i].begin(),node[i].end());
        node[i].erase(unique(node[i].begin(),node[i].end()),node[i].end());
    }
    dict[make_pair(1,0)];
    for(auto it = dict.begin(); it!= dict.end(); it++){
        it->second = ++id;
        cv[id] = it->first;
    }
    assert(id<MAXV);
    for(int i = 1; i <= n; i++){
        for(int j = 0; j < (int)node[i].size() - 1; j++){
            int tu = node[i][j];
            int tv = node[i][j+1];
            addEdge(dict[make_pair(i,tu)],dict[make_pair(i,tv)]);
        }
    }
    for(int i = 1; i <= m; i++){
        int u = e[i].u; int v = e[i].v;
        int st = e[i].st; int ed = e[i].ed;
        adj[dict[make_pair(u,st)]].push_back(dict[make_pair(v,ed)]);
    }
    
    memset(dp,-1,sizeof(dp));
    int q; cin >> q;
    for(int i = 1;i <= q; i++){
        int goal; cin >> goal;
        int low = 0;
        int high = node[1].size()-1;
        int ans = -1;
        while(low <= high){
            int mid = (low+high)/2;
            int id = dict[make_pair(1,node[1][mid])];
            if(go(id) <= goal){
                ans = max(ans,node[1][mid]);
                low = mid + 1;
            }
            else high = mid - 1;
        }
        cout<<ans<<"\n";
    }
    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 26 ms 30200 KB Output is correct
2 Correct 26 ms 30272 KB Output is correct
3 Correct 26 ms 30272 KB Output is correct
4 Correct 26 ms 30392 KB Output is correct
5 Correct 26 ms 30392 KB Output is correct
6 Correct 27 ms 30392 KB Output is correct
7 Correct 26 ms 30404 KB Output is correct
8 Correct 26 ms 30404 KB Output is correct
9 Correct 28 ms 30424 KB Output is correct
10 Correct 29 ms 30424 KB Output is correct
11 Correct 30 ms 30808 KB Output is correct
12 Correct 32 ms 30808 KB Output is correct
13 Correct 29 ms 31164 KB Output is correct
14 Correct 30 ms 31164 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 31 ms 31164 KB Output is correct
2 Correct 66 ms 31192 KB Output is correct
3 Correct 63 ms 31208 KB Output is correct
4 Correct 32 ms 31208 KB Output is correct
5 Correct 30 ms 31208 KB Output is correct
6 Correct 32 ms 31208 KB Output is correct
7 Correct 57 ms 31208 KB Output is correct
8 Correct 29 ms 31208 KB Output is correct
9 Correct 48 ms 31208 KB Output is correct
10 Correct 78 ms 31488 KB Output is correct
11 Correct 49 ms 31488 KB Output is correct
12 Correct 124 ms 31804 KB Output is correct
# Verdict Execution time Memory Grader output
1 Runtime error 305 ms 86340 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 327 ms 86456 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -