这道题比较简单(虽然还是经过4次才过了所有测试点)。思路是过一遍整个frame,确定每个字符的边界,即四个角的位置。然后对每个字符,看其四条边被哪些字符覆盖了,这些字符应该出现在这个字符前面。这样我们就可以构建出一个关于前后序列的有向图。最后做一次拓扑排序就可以了。
/*
ID: thestor1
LANG: C++
TASK: frameup
*/
#include <iostream>
#include <fstream>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <climits>
#include <cassert>
#include <string>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <algorithm>
using namespace std;
class Position {
public:
bool existed;
int low, high, left, right;
Position()
{
Position(-1, -1, -1, -1);
}
Position(int low, int high, int left, int right)
{
this->existed = false;
this->low = low;
this->high = high;
this->left = left;
this->right = right;
}
};
void topologicalSort(vector<int> &ins