求助!!!

tumd 2019-08-12 22:11:20

请问以下代码的读入的纵列预处理有何问题





// ----- 贪心 扫描K行,L 列 
#define DEBUG
#include <cstdio>
#include <algorithm>

int M,N,K,L,D;
const int Max = 1000 + 5;
struct Line{
	int cnt,Id;
	bool operator< (const Line& a) const {
		return cnt > a.cnt;
	}
#ifdef DEBUG
	void print() {
		printf("(cnt:%d Id:%d)",cnt,Id);
	}
#endif
};
Line A[Max],B[Max];				//添加的效率 A :行;B : 列  
/*1 means who will spaek 
0  0 0 0 0 
1  1 0 0 0
  |
  |
  A[0]++

0 0 0 0 0 
0 0 0 0 1>>B[2]++ 
0 0 0 0 1
.
.
.
*/ 

#ifdef DEBUG
void dp(Line* a,int n) {
	for (int i = 0;i < n; ++i)	a[i].print();
	puts("};");
}
#endif

int main() {
	/*
#ifdef DEBUG
	freopen("in.txt","r",stdin);
#endif
	*/
	scanf("%d%d%d%d%d",&M,&N,&K,&L,&D);
	for (int i = 0;i < D; ++i) {
	int x,y,p,q; 							// in text says X Y P Q
	scanf("%d%d%d%d",&x,&y,&p,&q);
	if (x == p){
			A[x - 1].cnt++;
			A[x - 1].Id = x;
		} else {
			B[x - 1].cnt++;
			B[x - 1].Id = y;
		}
	}

#ifdef DEBUG
	printf("A:{");
	dp(A,M);
#endif

#ifdef DEBUG
	printf("B:{");
	dp(B,N);
#endif
	// reading finally
	
	std::sort(A,A + M);
	
#ifdef DEBUG
	printf("A:{");
	dp(A,M);
#endif

	std::sort(B,B + N);

#ifdef DEBUG
	printf("B:{");
	dp(B,N);
#endif

	// the beginning
	
	// for Down
	
	for (int i = K;i > 0; --i)	printf("%d ",(A + i)->Id);
	puts("");
	
	//for Line
	
	for (int i = L;i > 0; --i)	printf("%d ",(B + i)->Id); 	
	
	// DONE
	return 0;
} 	
```

本菜鸟认为问题出在第54行的else语句后!!!###


so I did that:

  • 写了一堆预处理器

求助!!!