Submission #366330

#TimeUsernameProblemLanguageResultExecution timeMemory
366330ajpianoPlanine (COCI21_planine)C++17
0 / 110
6 ms876 KiB
#include <bits/stdc++.h>

using namespace std;

#define f first
#define s second

typedef long long ll;
typedef long double ld;
typedef pair<int,int> pi;

int main(){
    ios_base::sync_with_stdio(0); cin.tie(0);
    int n; ld h; cin >> n >> h;
    int p = n/2 - 1;
    vector<ld> l(p+1),r(p+1);
    vector<pair<ld,ld>> points(n+1);
    for(int i = 0; i < n; i++) cin >> points[i].f >> points[i].s;
    for(int i = 1; i <= p; i++){
        ld ldif = (points[2*i-1].s - points[2*i].s)/(points[2*i].f-points[2*i-1].f);
        ld rdif = (points[2*i+1].s - points[2*i].s)/(points[2*i + 1].f-points[2*i].f);
        l[i] = points[2*i].f - (h-points[2*i].s)/ldif;
        r[i] = points[2*i].f + (h-points[2*i].s)/rdif;
    }
    for(int i = 2; i <= p; i++) l[i] = max(l[i],l[i-1]);
    for(int i = p-1; i >= 1; i--) r[i] = min(r[i],r[i+1]);
    vector<int> dp(p+1);
    r[0] = -1e15;
    int ptr = 0;
    for(int i = 1; i <= p; i++){
        while(l[i] > r[ptr]) ptr++;
        dp[i] = dp[ptr-1]+1;
    }
    cout << dp[p] << "\n";
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...