| # | Time | Username | Problem | Language | Result | Execution time | Memory | 
|---|---|---|---|---|---|---|---|
| 159567 | geon040702 | 장애물 경기 (KOI16_dd) | C++14 | 145 ms | 12920 KiB | 
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define MAX 999999999
using namespace std;
struct Item
{
    int x, y[2];
    bool operator<(const Item &r) const {
        return x < r.x;
    }
};
int n, start_y, end_x;
Item hurdle[100010];
set< pair<int,int> > data1;
int data2[100010];
void calc_route()
{
    int i, j, temp[2];
    int ans = MAX, cnt = 0;
    set< pair<int, int> >::iterator pos, st, ed;
    data1.insert(make_pair(start_y, 0));
    for(i = 1 ; i <= n ; i++)
    {
        temp[0] = temp[1] = MAX;
        st = data1.lower_bound(make_pair(hurdle[i].y[0], 0));
        ed = data1.upper_bound(make_pair(hurdle[i].y[1], MAX));
        for(pos = st; pos != ed ; ++pos)
            for(j = 0 ; j <= 1 ; j++)
                temp[j] = min(temp[j], (*pos).second + abs(hurdle[i].y[j] - (*pos).first));
        data1.erase(st, ed);
        for(j = 0 ; j <= 1 ; j++)
            data1.insert(make_pair(hurdle[i].y[j], temp[j]));
    }
    for(pos = data1.begin(); pos != data1.end(); ++pos)
    {
        if(ans > (*pos).second)
        {
            ans = (*pos).second;
            cnt = 0;
        }
        if(ans == (*pos).second)
            data2[cnt++] = (*pos).first;
    }
    printf("%d\n%d", ans + end_x, cnt);
    for(i = 0 ; i < cnt ; i++)
        printf(" %d", data2[i]);
}
int main(void)
{
    int i;
    scanf("%d %d %d", &n, &start_y, &end_x);
    for(i = 1 ; i <= n ; i++)
    {
        scanf("%d %d %d", &hurdle[i].x, &hurdle[i].y[0], &hurdle[i].y[1]);
    }
    sort(hurdle+1, hurdle+n+1);
    calc_route();
    return 0;
}
Compilation message (stderr)
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
