Submission #95323

#TimeUsernameProblemLanguageResultExecution timeMemory
95323Retro3014도넛 (JOI14_ho_t3)C++17
100 / 100
465 ms3064 KiB
#include <iostream> #include <vector> #include <algorithm> #include <stdio.h> #include <deque> using namespace std; typedef long long ll; #define MAX_N 100000 int N; deque<ll> dq; ll sum[MAX_N+1], ans; ll calc(int x, int y){ if(x<=y){ if(x==0) return sum[y]; else return sum[y]-sum[x-1]; }else{ return sum[y]+sum[N-1]-sum[x-1]; } } ll calc2(int x, int y){ ll ret = 0; int s = 0, e = y, m; while(s<e){ m = (s+e)/2; ll s1 = calc(x, (x+m)%N), s2 = calc((x+m+1)%N, (x+y)%N); ret = max(ret, min(s1, s2)); if(s1<=s2) s = m+1; else e = m; } return ret; } int main(){ scanf("%d", &N); for(int i=0; i<N; i++){ ll x; scanf("%lld", &x); dq.push_back(x); } for(int i=0; i<dq.size(); i++){ if(i==0) sum[i] = dq[i]; else sum[i] = sum[i-1]+dq[i]; } for(int st=0; st<N; st++){ if(calc2((st+1)%N, N-2)<calc(st, st)) continue; int s = 0, e = N-1, m; while(s<e){ m = (s+e)/2+1; if(calc2((st+m+1)%N, N-1-(m+1)%N)>=calc(st, (st+m)%N)){ s = m; }else{ e = m-1; } } //cout<<st<<" "<<s<<endl; ans = max(ans, calc(st, (st+s)%N)); } printf("%lld", ans); return 0; }

Compilation message (stderr)

2014_ho_t3.cpp: In function 'int main()':
2014_ho_t3.cpp:45:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=0; i<dq.size(); i++){
               ~^~~~~~~~~~
2014_ho_t3.cpp:39:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d", &N);
  ~~~~~^~~~~~~~~~
2014_ho_t3.cpp:42:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%lld", &x);
   ~~~~~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...