Submission #1419169


Source Code Expand

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> P;
const int MAX_N = (1 << 21) - 1;
const int inf = numeric_limits<int>::max();


ll seg_add[MAX_N];
ll seg_max[MAX_N];

// call init(0,0,n) to init
// node k => [l,r)
void init(int k,int l,int r){
  if(r - l == 1){
    seg_add[k] = 0; // init leaf
    seg_max[k] = 0;
  }else{
    int chl = k*2+1;
    int chr = k*2+2;
    seg_add[k] = 0; // init internal-node
    seg_max[k] = 0;
    init(chl, l, (l+r)/2);
    init(chr, (l+r)/2, r);
  }
}

// call add(a,b,x,0,0,n) to add
// node k => [l,r)
void add(int a,int b,int x,int k,int l, int r){
  // not cross
  if(r <= a || b <= l)return;
  else if(a <= l && r <= b){
    // [a,b) contain [l,r)
    seg_add[k] += x;
  } else{
    // otherwise
    int chl = k*2+1;
    int chr = k*2+2;
    add(a,b,x,chl,l,(l+r)/2);
    add(a,b,x,chr,(l+r)/2,r);
    seg_max[k] = max(seg_max[chl] + seg_add[chl],
                     seg_max[chr] + seg_add[chr]);
  }
}

// call find(a,b,0,0,n) to find max-value in  [a,b)
// node k => [l,r)
ll find(int a,int b,int k,int l,int r){
  if(r <= a || b <= l) return 0;
  else if(a <= l && r <= b){
    // [a,b) contain [l,r)
    return seg_max[k] + seg_add[k];
  } else{
    // otherwise
    int chl = k*2+1;
    int chr = k*2+2;
    int vl = find(a,b,chl,l,(l+r)/2);
    int vr = find(a,b,chr,(l+r)/2,r);
    return max(vl,vr) + seg_add[k];
  }
}

int main(void){
  int n;
  vector< P > d;
  int upbound = 100010;
  cin >> n;
  for(int i = 0;i < n;++i){
    int s,t;
    cin >> s >> t;
    d.push_back(P(s,t));
  }
  for(int i = 1;i < n;++i){
    add(d[i].first,d[i].second,1,0,0,upbound);
  }
  ll res = find(0,upbound,0,0,upbound);
  for(int i = 1;i < n;++i){
    add(d[i-1].first,d[i-1].second,1,0,0,upbound);
    add(d[i].first,d[i].second,-1,0,0,upbound);
    res = min(res,find(0,upbound,0,0,upbound));
  }
  cout << res << endl;
  return 0;
}

Submission Info

Submission Time
Task D - 足ゲームII
User Ashurnasirpal
Language C++14 (GCC 5.4.1)
Score 100
Code Size 2002 Byte
Status AC
Exec Time 174 ms
Memory 6260 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 100 / 100
Status
AC × 3
AC × 34
Set Name Test Cases
Sample sample-01.txt, sample-02.txt, sample-03.txt
All sample-01.txt, sample-02.txt, sample-03.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, 01-23.txt, 01-24.txt, 01-25.txt, 01-26.txt, 01-27.txt, 01-28.txt, sample-01.txt, sample-02.txt, sample-03.txt
Case Name Status Exec Time Memory
01-01.txt AC 2 ms 2304 KB
01-02.txt AC 2 ms 2432 KB
01-03.txt AC 2 ms 2560 KB
01-04.txt AC 4 ms 5376 KB
01-05.txt AC 173 ms 6260 KB
01-06.txt AC 173 ms 6260 KB
01-07.txt AC 172 ms 6260 KB
01-08.txt AC 174 ms 6260 KB
01-09.txt AC 174 ms 6260 KB
01-10.txt AC 2 ms 2944 KB
01-11.txt AC 173 ms 6260 KB
01-12.txt AC 172 ms 6260 KB
01-13.txt AC 172 ms 6260 KB
01-14.txt AC 172 ms 6260 KB
01-15.txt AC 6 ms 5376 KB
01-16.txt AC 173 ms 6260 KB
01-17.txt AC 173 ms 6260 KB
01-18.txt AC 172 ms 6260 KB
01-19.txt AC 173 ms 6260 KB
01-20.txt AC 6 ms 5376 KB
01-21.txt AC 170 ms 6260 KB
01-22.txt AC 172 ms 6260 KB
01-23.txt AC 171 ms 6260 KB
01-24.txt AC 152 ms 3188 KB
01-25.txt AC 2 ms 2304 KB
01-26.txt AC 2 ms 2304 KB
01-27.txt AC 122 ms 6260 KB
01-28.txt AC 124 ms 6260 KB
sample-01.txt AC 2 ms 2304 KB
sample-02.txt AC 2 ms 2304 KB
sample-03.txt AC 2 ms 4352 KB