Nakalchi ReportsAdmin

← Back to analysis

var_c vs var_e

FLAGGED

Problem: two-sum

A→B100%B→A100%Shared fingerprints54
136tokens in the longest matched region
var_c
#include <bits/stdc++.h>
using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    int n; long long t;
    cin >> n >> t;
    unordered_map<long long, int> seen;
    seen.reserve(2 * n);
    int idx = 1;
    while (idx <= n) {
        long long x;
        cin >> x;
        long long need = t - x;
        auto it = seen.find(need);
        if (seen.end() != it) {
            cout << it->second << ' ' << idx << '\n';
            return 0;
        }
        seen[x] = idx;
        idx = idx + 1;
    }
    return 0;
}
var_e
#include <bits/stdc++.h>
using namespace std;

// two-sum, hash map approach, O(n) expected

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int total;          // element count
    long long goal;     // required sum
    cin >> total >> goal;

    unordered_map<long long, int> prior;    // value -> earliest index
    prior.reserve(2 * total);

    int pos = 1;
    while (pos <= total) {
        long long cur;
        cin >> cur;                          // next value
        long long complement = goal - cur;
        auto hit = prior.find(complement);
        if (prior.end() != hit) {
            // found the partner we stored earlier
            cout << hit->second << ' ' << pos << '\n';
            return 0;
        }
        prior[cur] = pos;                    // stash for later
        pos = pos + 1;
    }
    return 0;
}