제출 #1146764

#제출 시각아이디문제언어결과실행 시간메모리
1146764NewtonabcRabbit Carrot (LMIO19_triusis)C++20
0 / 100
1 ms328 KiB
#include<bits/stdc++.h> using namespace std; const int N=2e5+10; int arr[N]; set<pair<int,int>> s; int cp(pair<int,int> a,pair<int,int> b){ //compare a better 1, equal 0 , b better -1 if(a.first>b.first){ if(a.second>=b.second) return 1; else return 0; } if(a.first==b.first){ if(a.second>b.second) return 1; else if(a.second==b.second) return 0; else return -1; } if(a.first<b.first){ if(b.second>=a.second) return -1; return 0; } } void pt(){ cout<<"---------" <<"\n"; for(auto it=s.begin();it!=s.end();it++){ cout<<it->first <<" " <<it->second <<"\n"; } } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n,m; cin>>n >>m; for(int i=1;i<=n;i++) cin>>arr[i]; s.insert({0,0}); for(int i=1;i<=n;i++){ //pt(); auto it=s.lower_bound({arr[i]-m,INT_MIN}); if(it==s.end()) continue; //height=arr[i],block picked=find+1 int pick=it->second+1; pair<int,int> tmp={arr[i],pick}; s.insert(tmp); it=s.find(tmp); auto c=it; //check if can put in the set if(it!=s.begin()){ c--; if(cp(tmp,*c)==-1){ s.erase(tmp); continue; } } c=it,c++; if(c!=s.end()){ if(cp(tmp,*c)==-1){ s.erase(tmp); continue; } } //erase the other while(it!=s.begin()){ c=it,c--; if(cp(tmp,*c)==1) s.erase(c); else break; } c=it,c++; while(c!=s.end()){ if(cp(tmp,*c)==1) s.erase(c); else break; c=it,c++; } } //pt(); int ans=s.begin()->second; cout<<n-ans; }

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

triusis.cpp: In function 'int cp(std::pair<int, int>, std::pair<int, int>)':
triusis.cpp:21:1: warning: control reaches end of non-void function [-Wreturn-type]
   21 | }
      | ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...