孩子暴力写挂了呜呜呜
所以有巨佬能帮忙调吗?
思路:按到达时间排序然后暴力
#include <iostream>
#include <cstdio>
#include <queue>
#include <algorithm>
#define ll long long
using namespace std;
ll n,m1,m2,cntnat,cntinter,leaft[100005],ans,real;
struct nt{
ll arr,lea;
}nat[100005];
inline ll max(ll x,ll y){
if(y>x) return y;
return x;
}
struct iner{
ll arr,lea;
}inter[100005];
queue<ll> s;
queue<ll> w;
bool cmpt(nt a,nt b){
return a.arr<b.arr;
}
bool cmpo(iner a,iner b){
return a.arr<b.arr;
}
int main(){
freopen("airport.in","r",stdin);
freopen("airport.out","w",stdout);
cin >>n>>m1>>m2;
for(int i=1;i<=m1;i++){
cin >>nat[i].arr>>nat[i].lea;
}
for(int i=1;i<=m2;i++){
cin >>inter[i].arr>>inter[i].lea;
}
sort(nat+1,nat+m1,cmpt);
sort(inter+1,inter+1+m2,cmpo);
real=-1;
for(int i=0;i<=n;i++){
// i->nat n-i->inter
int ans=0;
while(!w.empty()) w.pop();
while(!s.empty()) s.pop();
cntnat=0;
cntinter=0;
for(int j=1;j<=m1;j++){
int now=nat[j].arr;
int MAX=cntnat,ti=0;
while(ti<MAX){
ti++;
int qwq=w.front();
w.pop();
if(qwq<now){
cntnat--;
continue;
}
else w.push(qwq);
}
if(cntnat<i){
w.push(nat[j].lea);
cntnat++;
ans++;
//cout <<j<<endl;
continue;
}
}
//cout <<ans<<endl;
for(int j=1;j<=m2;j++){
int now=inter[j].arr;
int MAX=cntinter,ti=0;
while(ti<MAX){
ti++;
int qwq=s.front();
s.pop();
if(qwq<now){
cntinter--;
continue;
}
else s.push(qwq);
}
if(cntinter<n-i){
s.push(inter[j].lea);
cntinter++;
ans++;
//cout <<"bianhao "<<j<<endl;
continue;
}
}
//cout <<ans<<endl;
real=max(real,ans);
}
cout <<real;
return 0;
}
// n1e5
CCF普及提高出2道模拟没horse