考场上写的,ccf的样例过了,前两个点至少能过吧,为啥全wa了?求解答
#include<bits/stdc++.h>
#define N 100050
using namespace std;
int n,im,cm;
int itin[N],itout[N][2];
int check1[N],check2[N];
int ctin[N],ctout[N][2];
int imaxt=-0x7f,cmaxt=-0x7f,ans=-0x7f;
int ilesst=0x7f,clesst=0x7f;
int main(){
freopen("airport.in","r",stdin);
freopen("airport.out","w",stdout);
cin >> n >> cm >> im;
for(int i=1;i<=cm;i++){
cin >> ctin[i] >> ctout[i][1];
if(ctout[i][1]>cmaxt){
cmaxt = ctout[i][1];
}
if(ctin[i]<clesst) clesst = ctin[i];
}
for(int i=1;i<=im;i++){
cin >> itin[i] >> itout[i][1];
if(itout[i][1]>imaxt){
imaxt = itout[i][1];
}
if(itin[i]<ilesst) ilesst = itin[i];
}
int cp=0,ip=0;
int cn,in;
for(int i=0;i<=n;i++){
cn = i;
in = n-i;
if(cn==0){
cp=0;
for(int j=ilesst;j<=imaxt;j++){
for(int k=1;k<=im;k++){
if(j==itout[k][1]&&itout[k][2]==1){
itout[k][2]==0;
in++;
break;
}
if(j==itin[k]&&in>=1){
itout[k][2]=1;
in--;
ip++;
break;
}
}
}
if(ans<ip){
ans = ip;
}
cp=0,ip=0;
}
else if(in==0){
ip=0;
for(int j=clesst;j<=cmaxt;j++){
for(int k=1;k<=cm;k++){
if(j==ctout[k][1]&&ctout[k][2]==1){
ctout[k][2]=0;
cn++;
break;
}
if(j==ctin[k]&&cn>=1){
ctout[k][2]=1;
cn--;
cp++;
break;
}
}
}
if(ans<cp){
ans=cp;
}
cp=0,ip=0;
}
else{
for(int j=clesst;j<=cmaxt;j++){
for(int k=1;k<=cm;k++){
if(j==ctout[k][1]&&ctout[k][2]==1){
ctout[k][2]=0;
cn++;
break;
}
if(j==ctin[k]&&cn>=1&&check2[k]==0){
ctout[k][2]=1;
cn--;
cp++;
break;
}
}
}
for(int j=ilesst;j<=imaxt;j++){
for(int k=1;k<=im;k++){
if(j==itout[k][1]&&itout[k][2]==1){
itout[k][2]=0;
in++;
break;
}
if(j==itin[k]&&in>=1){
itout[k][2]=1;
in--;
ip++;
break;
}
}
}
if(ans<(ip+cp)){
ans=ip+cp;
}
cp=0,ip=0;
}
}
cout << ans;
return 0;
}