Submission #125259

#TimeUsernameProblemLanguageResultExecution timeMemory
125259dragonslayeritMountains (IOI17_mountains)C++14
20 / 100
1000 ms380 KiB
#include "mountains.h" #include <vector> #include <algorithm> #include <cstdio> int* base; int solve(int* begin,int* end){ if(begin==end) return 0; int ans=1; std::vector<int*> sub; for(auto it=begin+1;it!=end;it++){ sub.push_back(it); } std::stable_sort(sub.begin(),sub.end(),[begin](int* a,int* b){return (a-begin)*(*b-*begin)>(b-begin)*(*a-*begin);}); std::reverse(sub.begin(),sub.end()); /* printf("[%ld,%ld):",begin-base,end-base); for(int* it:sub){ printf("%ld",it-base); } printf("\n"); */ int* last=end; for(int* it:sub){ if(it>last) continue; ans+=solve(it+1,last); last=it; } return std::max(ans,solve(begin+1,end)); } int maximum_deevs(std::vector<int> y) { base=y.data(); return solve(y.data(),y.data()+y.size()); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...