Submission #898596

#TimeUsernameProblemLanguageResultExecution timeMemory
898596WhiteBigger segments (IZhO19_segments)C++14
13 / 100
1 ms448 KiB
#pragma GCC optimize <"O3"> #include <bits/stdc++.h> #define endl "\n" using namespace std; long long red[500005]; vector<long long>clr,cur; long long binary(long long now){ long long l=0,r=cur.size()-1,mid,kr=cur.size()-1; if(cur.empty())return -1; while(l<r){ mid=(l+r)/2; if(cur[kr]-cur[mid]>=now)l=mid+1; else r=mid; } if(cur[kr]<now)return -1; if(cur[kr]-cur[l]<now)l--; if(l==-1)return -2; return l; } long long binary2(long long L,long long N){ long long l=0,r=cur.size(),mid,kr=cur.size()-1; for(;l<cur.size();l++){ if(cur[kr]-cur[l]+N<L+cur[l])break; } l--; return l; } int main(){ //ios_base::sync_with_stdio(false); //cin.tie(NULL); long long n; cin>>n; for(int i=0;i<n;i++)cin>>red[i]; long long br=1,L=red[0]; //cur.push_back(1);cur.push_back(3);cur.push_back(3);cur.push_back(3);cur.push_back(4);cur.push_back(4); //cout<<binary(0)<<endl; for(int i=1;i<n;i++){ //cout<<"L: "<<L<<endl; long long N=red[i]; if(N>=L){ br++; if(cur.size()>0){ long long kude=binary2(L,N); //cout<<kude<<endl; if(kude>-1)L=N+cur[cur.size()-1]-cur[kude]; else L=N+cur[cur.size()-1]; while(cur.empty()==false)cur.pop_back(); }else{ L=N; } }else{ long long kude=binary(L-N); //cout<<kude<<endl; if(kude==-1){ if(cur.empty()==true)cur.push_back(N); else cur.push_back(cur[cur.size()-1]+N); }else{ br++; if(kude>=0)L=N+cur[cur.size()-1]-cur[kude]; else L=N+cur[cur.size()-1]; while(cur.empty()==false)cur.pop_back(); } } } cout<<br<<endl; return 0; }

Compilation message (stderr)

segments.cpp:1:22: warning: '#pragma GCC optimize' is not a string or number [-Wpragmas]
    1 | #pragma GCC optimize <"O3">
      |                      ^
segments.cpp: In function 'long long int binary2(long long int, long long int)':
segments.cpp:27:11: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   27 |     for(;l<cur.size();l++){
      |          ~^~~~~~~~~~~
segments.cpp:26:19: warning: unused variable 'r' [-Wunused-variable]
   26 |     long long l=0,r=cur.size(),mid,kr=cur.size()-1;
      |                   ^
segments.cpp:26:32: warning: unused variable 'mid' [-Wunused-variable]
   26 |     long long l=0,r=cur.size(),mid,kr=cur.size()-1;
      |                                ^~~
#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...