제출 #729782

#제출 시각아이디문제언어결과실행 시간메모리
729782Nahian9696송신탑 (IOI22_towers)C++17
4 / 100
849 ms1452 KiB
#include "towers.h" #include <bits/stdc++.h> using namespace std; #define f0(i, n) for(int i = 0; i < (n); i++) #define f1(i, n) for(int i = 1; i <= (n); i++) #define pb push_back #define ff first #define ss second typedef vector<int> vi; vector<int> arr; bool first_time = true; int mxind = 0; void init(int N, std::vector<int> H) { arr = H; f0(i, N-1) { if(arr[i] < arr[i+1]) mxind = i+1; else break; } } int max_towers(int L, int R, int D) { if(L >= mxind || R <= mxind) return 1; if(arr[L] + D <= arr[mxind] && arr[R] + D <= arr[mxind]) return 2; return 1; // if(first_time) { // vi hh = vector(arr.begin()+L, arr.end()+R+1); // int n = R - L + 1; // int prefmin[n], sufmin[n]; // prefmin[0] = hh[0]; // sufmin[n-1] = hh[n-1]; // f1(i, n-1) { // prefmin[i] = min(hh[i], prefmin[i-1]); // sufmin[n - i + 1] = min(hh[n-i+1], sufmin[n-i]); // } // int ans = -1; // f0(i, n) { // if ( // prefmin[i] + D <= hh[i] && // sufmin[i] + D <= hh[i] // ) { // ans = max(ans, hh[i]); // } // } // if(ans == -1) return 0; // // sort(hh.begin(), hh.end()); // int ret = 0; // f0(i, n) if(hh[i] + D <= ans) ret ++; // return ret; // first_time = false; // } return 0; }
#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...