Submission #1223860


Source Code Expand

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<set>
#include<map>
#include<queue>
#include<cassert>
#define PB push_back
#define MP make_pair
#define ff first
#define ss second
#define sz(v) (in((v).size()))
#define forn(i,n) for(in i=0;i<(n);++i)
#define forv(i,v) forn(i,sz(v))
#define fors(i,s) for(auto i=(s).begin();i!=(s).end();++i)
#define all(v) (v).begin(),(v).end()
using namespace std;
typedef long long in;
typedef vector<in> VI;
typedef vector<VI> VVI;
typedef pair<in,in> PII;
vector<pair<PII,in> > evt;
vector<PII> rvt;
set<PII> cnu;
VI obv;
multiset<in> bd;
in bssc=0;
VI rbd;
VI bnus;
VI prtof;
VI typof;
VI usd;
void imp(){
  in q;
  cin>>q;
  forn(z,q)
    cout<<"-1\n";
  exit(0);
}
in vlof(in cc){
  cc=lower_bound(all(rbd),cc)-rbd.begin();
  if(cc==sz(bnus))
    return -1;
  in cv=bnus[cc];
  if(cv<0)
    return -1;
  return cv+bssc;
}
int main(){
  ios::sync_with_stdio(0);
  cin.tie(0);
  in n;
  cin>>n;
  in a,b;
  rvt.resize(n);
  usd.resize(n);
  forn(z,n){
    cin>>a>>b;
    rvt[z]=MP(b,a);
    if(a<=b){
      obv.PB(a);
      continue;
    }
    evt.PB(MP(MP(a,z),1));
    evt.PB(MP(MP(b,z),0));
  }
  forn(z,n+1){
    cin>>a;
    bd.insert(a);
  }
  bssc=sz(obv);
  forv(i,obv){
    auto it=bd.lower_bound(obv[i]);
    if(it==bd.end()){
      imp();
    }
    bd.erase(it);
  }
  fors(i,bd)
    rbd.PB(*i);
  n=sz(rbd);
  prtof.resize(n,-1);
  typof.resize(n,-1);
  bnus.resize(n);
  const in inf=1e7;
  sort(all(evt));
  in nxev=0;
  in nd;
  obv.clear();
  in bdbl=-1;
  forv(z,rbd){
    nd=rbd[z];
    while(nxev<sz(evt) && evt[nxev].ff.ff<=nd){
      if(evt[nxev].ss==0){
	cnu.insert(MP(rvt[evt[nxev].ff.ss].ss,evt[nxev].ff.ss));
      }
      else{
	if(!usd[evt[nxev].ff.ss]){
	  cnu.erase(evt[nxev].ff);
	  ++bssc;
	  obv.PB(evt[nxev].ff.ss);
	}
      }
      ++nxev;
    }
    if(sz(obv)>0){
      prtof[z]=obv.back();
      typof[z]=1;
      obv.pop_back();
      continue;
    }
    if(sz(cnu)==0){
      if(bdbl!=-1)
	imp();
      bdbl=z;
      continue;
    }
    auto it=cnu.end();
    --it;
    prtof[z]=it->second;
    typof[z]=0;
    usd[it->second]=1;
    cnu.erase(it);
  }
  assert(bdbl!=-1);
  bnus[bdbl]=0;
  for(in i=bdbl+1;i<sz(bnus);++i)
    bnus[i]=-inf;
  in cc;
  for(in i=bdbl-1;i>=0;--i){
    bnus[i]=bnus[i+1];
    if(typof[i]==0){
      cc=rvt[prtof[i]].ss;
      cc=lower_bound(all(rbd),cc)-rbd.begin();
      if(cc<sz(bnus))
	bnus[i]=max(bnus[i],bnus[cc]+1);
    }
  }
  in q;
  cin>>q;
  in ca,cb;
  forn(z,q){
    cin>>ca>>cb;
    in c1=vlof(ca);
    if(c1!=-1)
      ++c1;
    cout<<max(c1,vlof(cb))<<"\n";
  }
  return 0;
}

Submission Info

Submission Time
Task F - Two Faced Cards
User w4yneb0t
Language C++14 (GCC 5.4.1)
Score 2000
Code Size 2763 Byte
Status AC
Exec Time 945 ms
Memory 17260 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 2000 / 2000
Status
AC × 3
AC × 61
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
All sample_01.txt, sample_02.txt, sample_03.txt, sample_01.txt, sample_02.txt, sample_03.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt, subtask_1_26.txt, subtask_1_27.txt, subtask_1_28.txt, subtask_1_29.txt, subtask_1_30.txt, subtask_1_31.txt, subtask_1_32.txt, subtask_1_33.txt, subtask_1_34.txt, subtask_1_35.txt, subtask_1_36.txt, subtask_1_37.txt, subtask_1_38.txt, subtask_1_39.txt, subtask_1_40.txt, subtask_1_41.txt, subtask_1_42.txt, subtask_1_43.txt, subtask_1_44.txt, subtask_1_45.txt, subtask_1_46.txt, subtask_1_47.txt, subtask_1_48.txt, subtask_1_49.txt, subtask_1_50.txt, subtask_1_51.txt, subtask_1_52.txt, subtask_1_53.txt, subtask_1_54.txt, subtask_1_55.txt
Case Name Status Exec Time Memory
sample_01.txt AC 1 ms 256 KB
sample_02.txt AC 1 ms 256 KB
sample_03.txt AC 1 ms 256 KB
subtask_1_01.txt AC 70 ms 7316 KB
subtask_1_02.txt AC 73 ms 8560 KB
subtask_1_03.txt AC 35 ms 3896 KB
subtask_1_04.txt AC 70 ms 11884 KB
subtask_1_05.txt AC 45 ms 3828 KB
subtask_1_06.txt AC 108 ms 12524 KB
subtask_1_07.txt AC 85 ms 14956 KB
subtask_1_08.txt AC 109 ms 15852 KB
subtask_1_09.txt AC 105 ms 13420 KB
subtask_1_10.txt AC 59 ms 8816 KB
subtask_1_11.txt AC 42 ms 8048 KB
subtask_1_12.txt AC 55 ms 8048 KB
subtask_1_13.txt AC 78 ms 7920 KB
subtask_1_14.txt AC 43 ms 7280 KB
subtask_1_15.txt AC 64 ms 12780 KB
subtask_1_16.txt AC 32 ms 3060 KB
subtask_1_17.txt AC 154 ms 16748 KB
subtask_1_18.txt AC 35 ms 6384 KB
subtask_1_19.txt AC 52 ms 9456 KB
subtask_1_20.txt AC 120 ms 15852 KB
subtask_1_21.txt AC 162 ms 12336 KB
subtask_1_22.txt AC 151 ms 15980 KB
subtask_1_23.txt AC 165 ms 12336 KB
subtask_1_24.txt AC 153 ms 15980 KB
subtask_1_25.txt AC 163 ms 17004 KB
subtask_1_26.txt AC 152 ms 15852 KB
subtask_1_27.txt AC 90 ms 15596 KB
subtask_1_28.txt AC 157 ms 16236 KB
subtask_1_29.txt AC 159 ms 16236 KB
subtask_1_30.txt AC 151 ms 16364 KB
subtask_1_31.txt AC 89 ms 16492 KB
subtask_1_32.txt AC 945 ms 17260 KB
subtask_1_33.txt AC 160 ms 16748 KB
subtask_1_34.txt AC 150 ms 17132 KB
subtask_1_35.txt AC 89 ms 15724 KB
subtask_1_36.txt AC 154 ms 15980 KB
subtask_1_37.txt AC 158 ms 16236 KB
subtask_1_38.txt AC 148 ms 15852 KB
subtask_1_39.txt AC 91 ms 16620 KB
subtask_1_40.txt AC 152 ms 16492 KB
subtask_1_41.txt AC 152 ms 12304 KB
subtask_1_42.txt AC 126 ms 9080 KB
subtask_1_43.txt AC 155 ms 16880 KB
subtask_1_44.txt AC 130 ms 10272 KB
subtask_1_45.txt AC 75 ms 9376 KB
subtask_1_46.txt AC 155 ms 12304 KB
subtask_1_47.txt AC 118 ms 8692 KB
subtask_1_48.txt AC 155 ms 15600 KB
subtask_1_49.txt AC 128 ms 9216 KB
subtask_1_50.txt AC 84 ms 8848 KB
subtask_1_51.txt AC 1 ms 256 KB
subtask_1_52.txt AC 1 ms 256 KB
subtask_1_53.txt AC 1 ms 256 KB
subtask_1_54.txt AC 1 ms 256 KB
subtask_1_55.txt AC 1 ms 256 KB