/* FILE: verify.cpp last change: 2-Jul-2013 author: Romeo Rizzi * a partial verifier for problem permutGame */ #include #include #include using namespace std; const int MAX_N = 10000; const int MAX_K = 100; int n, k; int p[MAX_K][MAX_N+1]; // le k permutazioni di 1,2, ..., n che definiscono la configurazione del gioco void swap( int &a, int &b ) { int tmp = a; a = b; b = tmp; } bool isSorted(int n, int *p) { for(int i = 1; i < n; i++) if( p[i] > p[i+1] ) return false; return true; } int main() { ifstream fin("input.txt"); assert( fin ); fin >> n >> k; for(int j = 0; j < k; j++) for(int i = 1; i <= n; i++) fin >> p[j][i]; fin.close(); ifstream fsol("output.txt"); assert( fsol ); int num_sorted, num_mosse, swap1, swap2; fsol >> num_sorted >> num_mosse; for(int t = 1; t <= num_mosse; t++) for(int j = 0; j < k; j++) { fsol >> swap1 >> swap2; swap( p[j][swap1], p[j][swap2] ); } fsol.close(); for(int j = 0; j < k; j++) if( isSorted(n, p[j]) ) num_sorted--; if( num_sorted ) cout << " difforme il numero di permutazioni ordinate " << endl; else cout << "OK" << endl; return 0; }