제출 #1237472

#제출 시각아이디문제언어결과실행 시간메모리
1237472noyancanturk모임들 (IOI18_meetings)C++20
17 / 100
44 ms11336 KiB
#include "meetings.h"

#include<bits/stdc++.h>
using namespace std;

#define int long long
#define pb push_back

using pii=pair<int,int>;

vector<int>minimum_costs(vector<signed>h,vector<signed>l,vector<signed>r){
  int n=h.size();
  int q=l.size();
  for(int i=0;i<n;i++){
    assert(h[i]<=2);
    h[i]-=1;
  }
  int last[n]{};
  int suf[n]{};
  for(int i=n-1;0<=i;i--){
    last[i]=i;
    if(i+1<n&&!h[i+1])last[i]=last[i+1];
    if(!h[i]){
      suf[i]=1;
      if(i+1<n)suf[i]+=suf[i+1];
    }
  }
  int pref[n]{};
  for(int i=0;i<n;i++){
    if(!h[i]){
      pref[i]=1;
      if(i){
        pref[i]+=pref[i-1];
      }
    }
  }
  vector<int>c(q,0);
  vector<int>inds[n];
  for(int i=0;i<q;i++){
    inds[l[i]].pb(i);
  }
  deque<pii>ranges;
  for(int i=n-1;0<=i;i--){
    if(pref[i]==1){
      pii toad={i+suf[i]-1,suf[i]};
      while(ranges.size()&&ranges[0].second<suf[i])ranges.pop_front();
      ranges.push_front(toad);
    }
    for(int id:inds[i]){
      auto p=upper_bound(ranges.begin(),ranges.end(),pii{r[id],INT_MAX});
      if(p!=ranges.begin()){
        p--;
        c[id]=p->second;
      }
      if(!h[r[id]]){
        c[id]=max(c[id],pref[r[id]]);
      }
      if(!h[i]){
        c[id]=max(c[id],suf[i]);
      }
      c[id]=min<int>(c[id],r[id]-i+1);
      c[id]=2*(r[id]-i+1)-c[id];
    }
  }
  return c;
}

// std::vector<long long> minimum_costs(std::vector<int> H, std::vector<int> L,
//                                      std::vector<int> R) {
//   int Q = L.size();
//   std::vector<long long> C(Q);
//   for (int j = 0; j < Q; ++j) {
//     C[j] = H[L[j]];
//   }
//   return C;
// }

#undef int
#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...