Just [Array]

Anower HossainAnower Hossain
7 min read

ICPC Assiut University Community Newcomers Training, Do Your Best

A. Summation

void solve() {
    int n; cin>>n;
    ll arr[n];
    ll sum = 0;
    for(int i=0; i<n; i++) {
        cin >> arr[i];
        sum += arr[i];
    }
    cout<< abs(sum) << '\n';
}

B. Searching

void solve() {
    int n; cin >> n;
    ll arr[n];
    for(int i=0; i<n; i++) {
        cin>> arr[i];
    }
    int x; cin >> x;
    for(int i=0; i<n; i++) {
        if(arr[i]==x) {
            cout<< i << '\n';
            return;
        }
    }
    cout<< -1 << '\n';
}

C. Replacement

void solve() {
    int n; cin >> n;
    ll arr[n];
    for(int i=0; i<n; i++) {
        cin>> arr[i];
    }
    for(int i=0; i<n; i++) {
        if (arr[i] > 0) {
            arr[i] = 1;
        } else if (arr[i] < 0){
            arr[i] = 2;
        } else {
            arr[i] = 0;
        }
    }

    for(int i=0; i<n; i++) {
        cout<< arr[i] << ' ';
    }
    cout<< '\n';
}

D. Positions in array

void solve() {
    int n; cin >> n;
    ll arr[n];
    for(int i=0; i<n; i++) {
        cin>> arr[i];
    }
    for(int i=0; i<n; i++) {
        if(arr[i] <= 10) { 
            cout<< "A[" << i << "] = " << arr[i] << '\n';
        }
    }
}

E. Lowest Number

oid solve() {
    int n; cin >> n;
    ll arr[n];
    for(int i=0; i<n; i++) {
        cin>> arr[i];
    }
    int mn = INT_MAX, idx = -1;
    for(int i=0; i<n; i++) {
        if (arr[i] < mn) {
            mn = arr[i];
            idx = i;
        } 
    }
    cout<< mn << " " << (idx+1) << '\n';
}

F. Reversing

void solve() {
    int n; cin >> n;
    ll arr[n];
    for(int i=0; i<n; i++) {
        cin>> arr[i];
    }
    for(int i=n-1; i>=0; i--) {
        cout<< arr[i] << ' ';
    }
    cout<< '\n';
}

G. Palindrome Array

void solve() {
    int n; cin >> n;
    ll arr[n];
    for(int i=0; i<n; i++) {
        cin>> arr[i];
    }
    bool is_palindrome = true;
    for(int i=0; i<n/2; i++) {
        if(arr[i] != arr[n-i-1]) {
            is_palindrome = false;
            break;
        }
    }
    cout<< (is_palindrome ? "YES\n" : "NO\n");
}

H. Sorting

void solve() {
    int n; cin >> n;
    ll arr[n];
    for(int i=0; i<n; i++) {
        cin>> arr[i];
    }
    sort(arr, arr+n);
    for(int i=0; i<n; i++) {
        cout<< arr[i] << ' ';
    }
    cout<< '\n';


}

I. Smallest Pair

void solve() {
    int n; cin>>n;
    int arr[n];
    for(int i=0; i<n; i++) cin>>arr[i];

    int mn_val = INT_MAX;
    for(int i=0; i<n; i++) {
        for (int j=i+1; j<n; j++) {
            int cal = arr[i] + arr[j] + j - i;
            mn_val = min(mn_val, cal);
        }
    }
    cout<< mn_val << '\n';
}

J. Lucky Array

void solve()
{
    int n; cin>>n;
    vector<int> a(n);
    for(int i=0; i<n; i++) cin>>a[i];

    int mn = *min_element(a.begin(), a.end());
    int cnt = count(a.begin(), a.end(), mn);

    if(cnt%2 == 1) cout<<"Lucky\n";
    else cout<<"Unlucky\n";
}

K. Sum Digits

void solve()
{
    int n; cin>>n;
    string s; cin>>s;
    int digit_sum = 0;
    for(char digit : s) {
        digit_sum += digit - '0'; 
    }
    cout<< digit_sum <<'\n';

}

L. Max Subarray


void sub_arr(int n, vector<int> arr) {
    vector<int> mx_sub_arr;

    for(int i=0; i<n; i++) {
        int curr_mx_ele = arr[i];
        for(int j=i; j<n; j++) {
            curr_mx_ele = max(curr_mx_ele, arr[j]);
            // cout<< curr_mx_ele<< ' ';
            mx_sub_arr.push_back(curr_mx_ele);
        }
    }

    for(int mx_val : mx_sub_arr) {
        cout<< mx_val << " ";
    }
    cout<<'\n';
}

M. Replace MinMax

void solve() {
    int n; cin>>n; 
    vector<int> arr(n);
    for(int i=0; i<n; i++) cin>>arr[i];

    int mx_idx = max_element(arr.begin(), arr.end()) - arr.begin(); 
    int mn_idx = min_element(arr.begin(), arr.end()) - arr.begin(); 

    swap(arr[mn_idx], arr[mx_idx]);

    for(int num: arr) {
        cout << num << " ";
    }
    cout<< '\n';

}

N. Check Code

main{
    int a,b; // 3 3
    cin>>a>>b;
    string code; 
    cin>>code;
    if(a+b+1 != code.size()){
        cout<<"No"<<endl;
        return 0;
    }
    if(code[a] != '-'){
        cout<<"No"<<endl;
        return 0;
    }
    int counter = 0;
    for(int i=0;i<code.size();i++){
        if(code[i] >= 48 && code[i] <=57 && i != a){
            counter++; // 6
        }
    }
    if(counter == a+b){
        cout<<"Yes"<<endl;
    } else {
        cout<<"No"<<endl;
    }

}

O. Fibonacci

ll fibo(int n) {
    if(n == 1) return 0;
    if(n == 2) return 1;

    ll p1 = 0, p2 = 1, curr;
    for(int i=3; i<=n; i++) {
        curr = p1 + p2;
        p1 = p2;
        p2 = curr;
    }
    return p2;
}

P. Minimize Number

void solve() {
    int n; cin>>n; 
    int arr[n], mn = INT_MAX;

    for(int i=0; i<n; i++) {
        cin>>arr[i];
        int c=0;
        while(arr[i]%2 == 0 and arr[i]>0) {
            c++;
            arr[i]/=2;
        }
        mn = min(mn, c);
    }
    cout<< mn;

}

Q. Count Subarrays (Optimize Solution -> O(N)

void sub_array(int n, vector<int> arr) {
    int c=0, len = 1; 
    for(int i=1; i<n; i++) {
        if(arr[i] >= arr[i-1]) {
            len++;
        } else {
            c += (len * (len+1) / 2);
            len = 1;
        }
    }
    c += (len * (len+1) / 2);
    cout<< c <<'\n';
}

Q. Count Subarrays (Simple Solution -> O(N^2))

void sub_array_2(int n, vector<int> arr) { // O(N^2)
    int c = 0;
    for(int i=0; i<n; i++) {
        c++;
        for(int j=i+1; j<n; j++) {
            if(arr[j] >= arr[j-1]) {
                c++;
            } else break;
        }
    }
    cout << c << '\n';
}

R. Permutation with arrays

void solve(int tc = 0) {
    int n; cin>>n;
    vector<int> a(n), b(n);
    for(int i=0; i<n; i++) cin>>a[i]; 
    for(int i=0; i<n; i++) cin>>b[i]; 

    sort(a.begin(), a.end());
    sort(b.begin(), b.end());
    cout<< ((a == b) ? "yes":"no" ); 
}

S. Search In Matrix

void solve(int tc = 0) {
    int n,m; cin>>n>>m;
    int mat[n][m];
    for(int i=0; i<n; i++) {
        for(int j=0; j<m; j++) {
            cin>> mat[i][j];
        }
    }
    int x; cin>>x;
    bool found = false;
    for(int i=0; i<n; i++) {
        for(int j=0; j<m; j++) {
            if(mat[i][j] == x) {
                found = true;
                break; 
            }
        }
        if(found) break;
    }
    cout<< ((found) ? "will not take number\n":"will take number\n");
}

T. Matrix

void solve(int tc = 0) {
    int n; cin>>n;
    int mat[n][n];
    for(int i=0; i<n; i++) {
        for(int j=0; j<n; j++) {
            cin>> mat[i][j];
        }
    }
    int P_sum = 0;
    int S_sum = 0;
    for(int i=0; i<n; i++) {
        P_sum += mat[i][i];
        S_sum += mat[i][n-1-i];
    }
    cout<< abs(P_sum - S_sum) << '\n';
}

U. Is B a subsequence of A ?

void solve(int tc = 0) {
    int n, m; cin>>n>>m;
    vector<int> a(n), b(m);
    for(int i=0; i<n; i++) cin>> a[i];
    for(int i=0; i<m; i++) cin>> b[i];
    int i=0, j=0;
    while(i < n and j < m) {
        if(a[i] == b[j]) {
            j++;
        }; 
        i++;
    }
    cout << ((j==m) ? "YES\n":"NO\n");
}

V. Frequency Array

void solve(int tc = 0) {
    int n,m; cin>>n>>m;
    vector<int> a(n), freq(m+1);
    for(int i=0; i<n; i++) {
        cin>>a[i];
        freq[a[i]]++;
    }
    for(int i=1; i<=m; i++) {
        cout<< freq[i] << '\n';
    }
}

W. Mirror Array

void solve(int tc = 0) {
    int n,m; cin>>n>>m;
    vector<vector<int>> mat(n, vector<int>(m+1));
    for(int i=0; i<n; i++) {
        for(int j=0; j<m; j++) {
            cin>> mat[i][j];
        }
    }
    for(int i=0; i<n; i++) {
        for(int j=m-1; j>=0; j--) {
            cout<< mat[i][j] <<" ";
        }
        cout<< '\n';
    }
}

X. 8 Neighbors

void solve(int tc = 0) {
    int n,m; cin>>n>>m;
    // vector<vector<char>> mat(n, vector<char>(m+1));
    char mat[n][m];
    for(int i=0; i<n; i++) {
        for(int j=0; j<m; j++) {
            cin>> mat[i][j];
        }
    }

    int x,y; cin>>x>>y;
    // 0 - Based
    x--,y--;

    // Possible 8 direction X,Y 
    // vector<pair<int, int>> directions
    int dxy[8][2] = {
        {-1, 0}, {1, 0}, {0, 1}, {0, -1},
        {-1, -1}, {-1, 1}, {1, -1}, {1, 1}
    };

    for(int i=0; i<8; i++) {
        int nx = x + dxy[i][0];
        int ny = y + dxy[i][1];

        if(nx >= 0 and nx < n and ny >= 0 and ny < m and mat[nx][ny] != 'x') {
            cout << "no\n";
            return;
        }
    }
    cout << "yes\n";
}

Y. Range sum query

void solve(int tc = 0) {
    ll n,q; cin>>n>>q;
    ll a[n];
    for(int i=0; i<n; i++) cin>>a[i];

    ll pre[n];
    pre[0] = a[0];
    for(int i=1; i<n; i++) {
        pre[i] = a[i] + pre[i-1];
    }

    while(q--) {
        ll l,r; cin>>l>>r;
        l--;
        r--;
        ll sum_res;
        if(l==0) {
            sum_res = pre[r];
        } else {
            sum_res = pre[r] - pre[l-1];
        }
        cout<< sum_res << '\n';
    }
}

Z. Binary Search

bool binary_search(int a[], int n, int x) {
    int l = 0, r = n - 1;

    while(l <= r) {
        int mid = l + (r - l) / 2;
        if(a[mid] == x) {
            return true;
        } else if(a[mid] < x) {
            l = mid + 1;
        } else {
            r = mid - 1;
        }
    }
    return false;
}


void solve(int tc = 0) {
    int n,q; cin>>n>>q;
    int a[n];
    for(int i=0; i<n; i++) cin>>a[i];

    sort(a, a + n);
    while(q--) {
        int x; cin>>x;
        if(binary_search(a, n, x)) {
            cout <<  "found\n";
        } else {
            cout <<  "not found\n";
        }
    }
}
0
Subscribe to my newsletter

Read articles from Anower Hossain directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Anower Hossain
Anower Hossain

This is Anower Hossain. Passionate about programming, and problem-solving.