Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //P18660
- #include <iostream>
- #include <string>
- #include <vector>
- using namespace std;
- typedef vector<vector<char> > Sopa;
- const int MINUSTOMAYUS = 'a' - 'A';
- void marcar_palabra(int y, int x, Sopa& s, int medida, int dir){
- if (dir == 1){
- //Horizontal
- for (int i=0; i < medida; ++i){
- if (s[y][x] >= 'a' and s[y][x] <= 'z')
- s[y][x] = s[y][x] - MINUSTOMAYUS;
- ++x;
- }
- }
- //Vertical
- else if (dir == 2){
- for (int i=0; i < medida; ++i){
- if (s[y][x] >= 'a' and s[y][x] <= 'z')
- s[y][x] = s[y][x] - MINUSTOMAYUS;
- ++y;
- }
- }
- else { //Diagonal
- for (int i=0; i < medida; ++i){
- if (s[y][x] >= 'a' and s[y][x] <= 'z')
- s[y][x] = s[y][x] - MINUSTOMAYUS;
- ++x;
- ++y;
- }
- }
- }
- void find_word(int y, int x, Sopa& s, string p){
- if (s[y][x] == p[0] or s[y][x] + MINUSTOMAYUS == p[0]) {
- int medida_p = p.size();
- //Horizontal
- if (s[0].size()-x >= medida_p){
- int i = x+1;
- int j = 1;
- while(j < medida_p and (s[y][i] == p[j] or
- s[y][i] + MINUSTOMAYUS == p[j])) {
- ++i;
- ++j;
- }
- if (j == medida_p)
- marcar_palabra(y,x,s,medida_p,1);
- }
- //Vertical
- if (s.size()-y >= medida_p){
- int i = y+1;
- int j = 1;
- while(j < medida_p and (s[i][x] == p[j] or
- s[i][x] + MINUSTOMAYUS == p[j])) {
- ++i;
- ++j;
- }
- if (j == medida_p)
- marcar_palabra(y,x,s,medida_p,2);
- }
- //Diagonal
- if (s[0].size()-x >= medida_p and s.size()-y >= medida_p){
- int i = x+1;
- int j = y+1;
- int l = 1;
- while(l < medida_p and (s[j][i] == p[l] or
- s[j][i] + MINUSTOMAYUS == p[l])) {
- ++i;
- ++j;
- ++l;
- }
- if (l == medida_p)
- marcar_palabra(y,x,s,medida_p,3);
- }
- }
- }
- int main(){
- int x,m,n;
- bool primer = true;
- while (cin >> x >> m >> n)
- {
- vector<string> palabra(x);
- for (int i=0; i<x; ++i)
- cin >> palabra[i];
- Sopa s(m, vector<char>(n));
- for (int i=0; i < m; ++i)
- for (int j=0; j < n; ++j)
- cin >> s[i][j];
- for (int i=0; i < m; ++i)
- for (int j=0; j < n; ++j)
- if (s[i][j] >= 'a' and s[i][j] <= 'z')
- for (int p=0; p < x; ++p)
- find_word(i,j,s,palabra[p]);
- if (primer) primer = false;
- else cout << endl;
- for (int i=0; i < m; ++i){
- cout << s[i][0];
- for (int j=1; j < n; ++j)
- cout << ' ' << s[i][j];
- cout << endl;
- }
- }
- }
- //P91748
- #include <cmath>
- #include <vector>
- #include <iostream>
- using namespace std;
- typedef vector<int> Row;
- typedef vector<Row> Square;
- int sum_n(int n);
- void fill_vector(vector <int>& v);
- bool is_vector_blank(vector <int>& v);
- bool is_latin(const Square& q);
- int main()
- {
- }
- bool is_latin(const Square& q)
- {
- int s = q.size();
- vector <int> nums(s);
- //Rows
- for (int i = 0; i < s; ++i) {
- fill_vector(nums);
- for (int j = 0; j < s; ++j) {
- if (q[i][j] > s) return false;
- nums[q[i][j]-1] = 0;
- }
- if (not is_vector_blank(nums)) return false;
- }
- //Rows
- for (int i = 0; i < s; ++i) {
- fill_vector(nums);
- for (int j = 0; j < s; ++j) {
- if (q[j][i] > s) return false;
- nums[q[j][i]-1] = 0;
- }
- if (not is_vector_blank(nums)) return false;
- }
- return true;
- }
- bool is_vector_blank(vector <int>& v)
- {
- int s = v.size();
- for (int i = 0; i < s; ++i) {
- if (v[i] != 0) return false;
- }
- return true;
- }
- void fill_vector(vector <int>& v)
- {
- int s = v.size();
- for (int i = 1; i <= s; ++i) {
- v[i-1] = i;
- }
- }
- int sum_n(int n)
- {
- int sum = 0;
- for (int i = 1; i <= n; ++i)
- sum += i;
- return sum;
- }
- //P71711
- #include <vector>
- #include <iostream>
- using namespace std;
- typedef vector<int> Row;
- typedef vector<Row> Matrix;
- bool is_inc(const Matrix& m, int r, int c);
- void read_matrix(Matrix& to, int r, int c);
- int main()
- {
- int n = 1, f, c;
- while (cin >> f >> c) {
- Matrix m(f, Row(c));
- read_matrix(m, f, c);
- cout << "matriu " << n << ": ";
- if (is_inc(m, f, c)) {
- cout << "si" << endl;
- } else {
- cout << "no" << endl;
- }
- ++n;
- }
- }
- bool is_inc(const Matrix& m, int r, int c)
- {
- int prev_x, x;
- for (int j = 0; j < c; ++j) {
- if (j == 0) {
- prev_x = m[0][0];
- for (int i = 1; i < r; ++i) {
- x = m[i][j];
- if (x <= prev_x) return false;
- prev_x = x;
- }
- } else if (j%2 == 0) {
- for (int i = 0; i < r; ++i) {
- x = m[i][j];
- if (x <= prev_x) return false;
- prev_x = x;
- }
- } else {
- for (int i = r-1; i >= 0; --i) {
- x = m[i][j];
- if (x <= prev_x) return false;
- prev_x = x;
- }
- }
- }
- return true;
- }
- void read_matrix(Matrix& to, int r, int c)
- {
- for (int i = 0; i < r; ++i) {
- for (int j = 0; j < c; ++j) {
- cin >> to[i][j];
- }
- }
- }
- //P27498
- #include <vector>
- using namespace std;
- typedef vector< vector<int> > Matrix;
- void transpose(Matrix& m)
- {
- int s = m.size();
- for (int i = 1; i < s; ++i) {
- for (int j = 0; j < i; ++j) {
- swap(m[i][j], m[j][i]);
- }
- }
- }
- int main()
- {
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement