730H - Delete Them - CodeForces Solution


constructive algorithms implementation *1300

Please click on ads to support us..

C++ Code:

#include<bits/stdc++.h>
using namespace std;

int main()  {
    int n, m;
    cin >> n >> m;
    vector<string> a(n);
    map<int,int> mp;
    for(int i = 0; i < n; i++) {
        cin >> a[i];
    }
    vector<int> b(m);
    for(int i = 0; i < m; i++) {
        int x;
        cin >> x;
        b[i] = x-1;
        mp[x-1] ++;
    }
    int l=-1;
    for(auto i:b) {
        int l1 = a[i].length();
        if(l==-1) {
            l = l1;
        }
        else {
            if(l1 != l) {
                //cout << "yes1";
                cout << "No";
                return 0;
            }
        }
    }
    vector<char> c(l,'?');
    for(int i = 0; i < l; i++) {
        char c1 = '#';
        bool f = 1;
        for(int j = 0; j < m; j++) {
            if(c1=='#') {
                c1 = a[b[j]][i];
            }
            else {
                if(a[b[j]][i] != c1) {
                    f = 0;
                    break;
                }
            }
        }
        if(f) {
            c[i] = c1;
        }
    }
    /*for(auto i:c) {
        cout << i; 
    }*/
    bool f2 = 1;
    for(int i = 0; i < n; i++) {
        if(mp[i]>0) {
            continue;
        }
        if(a[i].length() != l) {
            continue;
        }
        bool f1 = 1;
        for(int j = 0; j < l; j++) {
            if(c[j]=='?') {
                continue;
            }
            if(c[j] != a[i][j]) {
                f1 = 0;
                break;
            }
        }
        if(f1) {
            f2 = 0;
        }
    }
    if(!f2) {
        //cout << "yes2";
        cout << "No";
    }
    else {
        cout << "Yes" << endl;
        for(int i = 0; i < l; i++) {
            cout << c[i];
        }
    }
}


Comments

Submit
0 Comments
More Questions

1302. Deepest Leaves Sum
1209. Remove All Adjacent Duplicates in String II
994. Rotting Oranges
983. Minimum Cost For Tickets
973. K Closest Points to Origin
969. Pancake Sorting
967. Numbers With Same Consecutive Differences
957. Prison Cells After N Days
946. Validate Stack Sequences
921. Minimum Add to Make Parentheses Valid
881. Boats to Save People
497. Random Point in Non-overlapping Rectangles
528. Random Pick with Weight
470. Implement Rand10() Using Rand7()
866. Prime Palindrome
1516A - Tit for Tat
622. Design Circular Queue
814. Binary Tree Pruning
791. Custom Sort String
787. Cheapest Flights Within K Stops
779. K-th Symbol in Grammar
701. Insert into a Binary Search Tree
429. N-ary Tree Level Order Traversal
739. Daily Temperatures
647. Palindromic Substrings
583. Delete Operation for Two Strings
518. Coin Change 2
516. Longest Palindromic Subsequence
468. Validate IP Address
450. Delete Node in a BST