제출 #108423

#제출 시각아이디문제언어결과실행 시간메모리
108423tictaccatShortcut (IOI16_shortcut)C++14
71 / 100
2054 ms2688 KiB
#include "shortcut.h" #include <bits/stdc++.h> typedef long long ll; using namespace std; const ll INF = 1e18; int n; ll c; vector<ll> l,d,x; bool check (ll k) { ll delta = k-c; ll difMax = INF, difMin = -INF, sumMax = INF, sumMin = -INF; for (int i = 0; i < n; i++) { for (int j = i+1; j < n; j++) { if (x[j] - x[i] + d[i] + d[j] <= k) continue; ll delta = k - c - d[i] - d[j]; difMax = min(x[j]-x[i]+delta, difMax); difMin = max(x[j]-x[i]-delta, difMin); sumMax = min(x[j]+x[i]+delta, sumMax); sumMin = max(x[j]+x[i]-delta, sumMin); } } for (int i = 0; i < n; i++) { for (int j = i+1; j < n; j++) { if (x[j] - x[i] < difMin) continue; if (x[j] - x[i] > difMax) continue; if (x[j] + x[i] < sumMin) continue; if (x[j] + x[i] > sumMax) continue; return true; } } return false; } long long find_shortcut(int nt, std::vector<int> lt, std::vector<int> dt, int ct) { n = nt; c = ct; l.insert(l.end(),lt.begin(), lt.end()); d.insert(d.end(), dt.begin(), dt.end()); x.resize(n); for (int i = 1; i < n; i++) x[i] = x[i-1] + l[i-1]; //length sum from left to index i ll k = 0; ll high = INF; for (ll b = high/2; b > 0; b /= 2) { while (k + b < high && !check(k+b)) { k += b; // cout << k << "\n"; } } return k+1; }

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

shortcut.cpp: In function 'bool check(ll)':
shortcut.cpp:13:8: warning: unused variable 'delta' [-Wunused-variable]
     ll delta = k-c;
        ^~~~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...