关于s组t1爆零
查看原帖
关于s组t1爆零
355069
学校你刘哥楼主2021/10/23 23:22

考场上写的,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;
}
2021/10/23 23:22
加载中...