#include #include #include #include using namespace std; const int maxn=1000+5; const int maxk=20000+5; struct Pont { int id, r, c, hols, holo; Pont(int id=-1, int r=-1, int c=-1): id(id), r(r), c(c) { } }; int n; Pont *pontok; list *tmps, *tmpo; vector *sor, *oszlop; char ki[maxn]; class SortOszlop { public: bool operator () (const int a, const int b) const { return pontok[a].r < pontok[b].r; } }; class SortSor { public: bool operator () (const int a, const int b) const { return pontok[a].c < pontok[b].c; } }; int beolvas() { int i, a, b; for(i=0; i::iterator it; m=tmpo[i].size(); oszlop[i].clear(); oszlop[i].reserve(m); for(it=tmpo[i].begin(); it!=tmpo[i].end(); it++) oszlop[i].push_back(*it); sort(oszlop[i].begin(), oszlop[i].end(), SortOszlop()); m=tmps[i].size(); sor[i].clear(); sor[i].reserve(m); for(it=tmps[i].begin(); it!=tmps[i].end(); it++) sor[i].push_back(*it); sort(sor[i].begin(), sor[i].end(), SortSor()); } return 1; } int main() { tmps=new list[maxk]; tmpo=new list[maxk]; sor=new vector[maxk]; oszlop=new vector[maxk]; pontok=new Pont[maxn]; while(beolvas()) { int i, j, m, sorbol; for(i=0; i=0) printf("%s\n", ki); else { for(i=n-1; i>=0; i--) { switch(ki[i]) { case 'N': putchar('S'); break; case 'S': putchar('N'); break; case 'E': putchar('W'); break; case 'W': putchar('E'); break; default: break; } } printf("\n"); } } delete [] pontok; delete [] tmps; delete [] tmpo; return 0; }