제출 #883478

#제출 시각아이디문제언어결과실행 시간메모리
883478ono_de206철로 (IOI14_rail)C++14
56 / 100
408 ms98900 KiB
#include "rail.h" #include<bits/stdc++.h> using namespace std; #define in insert #define all(x) x.begin(),x.end() #define pb push_back #define eb emplace_back #define ff first #define ss second //#define int long long typedef long long ll; typedef vector<int> vi; typedef set<int> si; typedef multiset<int> msi; typedef pair<int, int> pii; typedef vector<pii> vpii; void findLocation(int n, int first, int pos[], int tp[]) { pos[0] = first; tp[0] = 1; vector<vector<int>> dis(n, vector<int>(n, -1)); auto get = [&](int x, int y) -> int { if(x > y) swap(x, y); if(dis[x][y] != -1) return dis[x][y]; return dis[x][y] = getDistance(x, y); }; for(int i = 1; i < n; i++) { vector<int> lol; for(int j = 1; j < n; j++) { if(i == j) continue; if(get(0, i) == get(0, j) + get(j, i)) lol.pb(j); } int x = first, ls = 0, k = 0; lol.pb(i); sort(all(lol), [&](int ii, int jj) { return get(0, ii) < get(0, jj); }); for(int y : lol) { if(k) { x -= get(ls, y); } else { x += get(ls, y); } ls = y; k ^= 1; } pos[i] = x; tp[i] = k + 1; } for(int i = 0; i < n; i++) { assert(pos[i] >= 0 && pos[i] < 1000000); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...