Cod sursă (job #751546)

Utilizator avatar Razvan23 Razvan Mosanu Razvan23 IP ascuns
Problemă Fotografie (clasele 9-10) Compilator cpp-32 | 1,30 kb
Rundă vs_11_12_dec Status evaluat
Dată 16 dec. 2023 11:40:45 Scor 30
#include <bits/stdc++.h>
using namespace std;

ifstream fin("fotografie.in");
ofstream fout("fotografie.out");

short a[1005][1005], b[1005][1005];
char s[1005];
short n, m, cnt, x, y;
pair<short, short> d[1005];

void Verif(short i, short j)
{
    short ll, l;
    short aux, aux1;
    aux = i;
    aux1 = j;
    for(ll=1; ll<=x; ll++)
    {
        for(l=1; l<=y; l++)
            if(a[i][j] == b[ll][l]) j++;
            else return;
        j = aux1;
        i++;
    }
    d[++cnt].first = aux - 1;
    d[cnt].second = aux1 - 1;
}

bool cmp(pair<short, short> x, pair<short, short> y)
{
    if(x.first != y.first) return x.first < y.first;
    return x.second < y.second;
}

int main()
{
    short i, j;
    fin >> n >> m;
    for(i=1; i<=n; i++)
    {
        fin >> (s + 1);
        for(j=1; j<=m; j++)
            a[i][j] = s[j] - 'a' + 1;
    }
    fin >> x >> y;
    for(i=1; i<=x; i++)
    {
        fin >> (s + 1);
        for(j=1; j<=y; j++)
            b[i][j] = s[j] - 'a' + 1;
    }
    for(i=1; i<=n; i++)
        for(j=1; j<=m; j++)
            if(a[i][j] == b[1][1]) Verif(i, j);
    sort(d + 1, d + cnt + 1, cmp);
    for(i=1;i<=cnt;i++)
        fout << d[i].first << " " << d[i].second << "\n";
    fin.close();
    fout.close();
    return 0;
}