제출 #673076

#제출 시각아이디문제언어결과실행 시간메모리
6730761binRail (IOI14_rail)C++14
8 / 100
72 ms468 KiB
#include <bits/stdc++.h>
#include "rail.h"

using namespace std;

#define all(v) v.begin(), v.end()
typedef long long ll;

/*
int getDistance(int a, int b){
    cout << a << ' ' << b << endl;
    int x;
    cin >> x;
    return x;
}*/

void findLocation(int n, int fi, int location[], int stype[]){
    vector<pair<int, int>> v;
    for(int i = 1; i < n; i++){
        int d = getDistance(0, i);
        v.emplace_back(d, i);
    }
    sort(all(v));
    location[0] = fi; stype[0] = 1;
    if(n == 1) return;
    
    auto [d0, x] = v[0];
    location[x] = fi + d0; stype[x] = 2;
    int l, r, dr, dl;
    l = -1, r = x, dr = d0;
    for(int i = 1; i < n - 1; i++){
        auto&[d, x] = v[i];
        //cout << "cur is : " << l << ' ' << r << ' ' << x << '\n';
        int d1 = getDistance(1, x);
        if(d0 + d1 == d){
            int xl = getDistance(l, x);
            if(l != -1 && d == dl + xl){
                location[x] = location[l] + xl;
                stype[x] = 2;
            }
            else{
                location[x] = fi + 2 * d0 - d;
                stype[x] = 1;
                l = x, dl = d;
            }
        }
        else{
            int xr = getDistance(r, x);
            if(d == dr + xr){
                location[x] = fi + dr - xr;
                stype[x] = 1;
            }
            else{
                location[x] = fi + d;
                stype[x] = 2;
                r = x; dr = d;
            }
        }
    }
    return;
}

/*
int main(void){
    int n = 4, fi = 2, a[4], b[4];
    findLocation(n, fi, a, b);
    for(int i = 0; i < 4; i++) cout << a[i] << ' ' << b[i] << '\n';
    return 0;
}*/

컴파일 시 표준 에러 (stderr) 메시지

rail.cpp: In function 'void findLocation(int, int, int*, int*)':
rail.cpp:27:10: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   27 |     auto [d0, x] = v[0];
      |          ^
rail.cpp:32:14: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   32 |         auto&[d, x] = v[i];
      |              ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...