Блог пользователя a_for_abdullah

Автор a_for_abdullah, история, 6 часов назад, По-английски

Yesterday even after solving three problems i got a delta negative which doesn,t usually happens when you solve three questions at the rating where i am so i searched for telegram channels and guess what i found, I found a telegram channel with over 3300 members, I don,t want to write the name here for obvious reasons, here are some of the solutions that were floating there

Solutions of C:

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <unordered_map>
using namespace std;
void maximizeGoodPairs(string &s) {
    int n = s.size();
    unordered_map<char, int> freq;
    for (char c : s) {
        freq[c]++;
    }
    string result(n, ' ');
    int idx = 0;
    while (true) {
        bool filled = false;
        for (auto &[ch, count] : freq) {
            if (count > 0) {
                result[idx] = ch;
                idx++;
                count--;
                filled = true;
                if (idx >= n) {
                    idx = 1;
                }
            }
        }
        if (!filled) {
            break;
        }
    }
    cout << result << endl;
}
int main() {
    int t;
    cin >> t;
    while (t--) {
        int n;
        cin >> n;
        string s;
        cin >> s;
        maximizeGoodPairs(s);
    }
    return 0;
}

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void solve() {
    int n;
    string s;
    cin >> n >> s;
    vector<int> freq(26, 0);
    // Count frequency of each character
    for (char c : s) {
        freq[c - 'a']++;
    }
    string even, odd;
    // Fill two separate strings: one for even index positions and one for odd index positions
    for (int i = 0; i < 26; ++i) {
        if (freq[i] > 0) {
            string chars(freq[i], 'a' + i);
            if (even.size() <= odd.size()) {
                even += chars;
            } else {
                odd += chars;
            }
        }
    }
    // Now alternate between even and odd strings
    string result;
    int i = 0, j = 0;
    while (i < even.size() || j < odd.size()) {
        if (i < even.size()) result += even[i++];
        if (j < odd.size()) result += odd[j++];
    }
    cout << result << endl;
}
int main() {
    int t;
    cin >> t;
    while (t--) {
        solve();
    }
    return 0;
}

Solution of D1:

#include <iostream>
#include <unordered_set>
#include <sstream>
using namespace std;
int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int tes;
    cin >> tes;
    ostringstream sb;
    while (tes--) {
        int que;
        long long m;
        cin >> que >> m;
        int max_val = 0;
        while (que--) {
            int n;
            cin >> n;
            unordered_set<int> set;
            int a[n];
            for (int i = 0; i < n; ++i) {
                cin >> a[i];
                set.insert(a[i]);
            }
            int first = 0;
            while (true) {
                if (set.find(first) == set.end()) {
                    set.insert(first);
                    break;
                }
                ++first;
            }
            while (true) {
                if (set.find(first) == set.end()) {
                    max_val = max(max_val, first);
                    break;
                }
                ++first;
            }
        }
        if (m >= max_val) {
            long long ans = (long long)max_val * (max_val + 1);
            long long big = (m * (m + 1)) / 2 - ans / 2;
            sb << (ans + big) << '\n';
        } else {
            long long ans = (long long)max_val * (m + 1);
            sb << ans << '\n';
        }
    }
    cout << sb.str();
    return 0;
}

Solution of D2:

#include<bits/stdc++.h> using namespace std; #dPfinn int long long int sum(int x) { return x*(x+1) ; } int interval(int I,int r) { return sum(r)-sum(I-1); } vector<int> son[1000001]; int dp[1000001]; void solve() int n,m,s=0,mint=0; map<int,int> cnt; cin B; n B; m; for(int i=1,u,v;i<=n;++0 { int I; cin B; I; set<int> t; for(int i=1,x;i<=1;++0 { cin B; x; t.insert(x); } bool flag=true; for(int i=0;;++i) { if(!t.count(i)) { if(flag) { flag=false; u=i; mint=max(mint,u); } else { v=i; break;}
}
} s=max(s,v);
son[v].push_back(u);
cnt[u]++;

} for(int i=0; i<=s; ++0 dp[i]=-1; for(int i=s; i>=0; --i) if(dp[i]==-1) dp[i]=i; for(int j:son[i]) dp[j]=max(dp[j],dp[i]);
  } int pp=0; for(int i=0; i<=s; ++0 if(i<=mint) dp[i]=max(dp[i],mint); for(auto i:cnt) if(i.second>=2) pp=max(pp,dp[i.first]);
  } for(int i=0; i<=s; ++0 dp[i]=max(dp[i],pp); for(int i=0; i<=s; ++0 son[i].clear(); if(m<=s) int sum=0; for(int i=0; i<=m; ++0 sum+=dp[i]; cout B+ sum B+ endl; return;
  } int sum=0; for(int i=0; i<=s; ++0 sum+=dp[i]; sum+=interval(s+1,m); cout B+ sum B+ endl;
} signed main() {
cin.tie(0);
 cout.tie(0);
 ios_base::sync_with_stdio(0);
 int t;cin>>t;
 while(t--)solve()

above D2 sol if rewritten using GPT

#include <bits/stdc++.h>
using namespace std;
#define int long long
int sum(int x) {
    return x * (x + 1) / 2;  // Corrected the sum formula
}
int interval(int I, int r) {
    return sum(r) - sum(I - 1);
}
vector<int> son[1000001];
int dp[1000001];
void solve() {
    int n, m, s = 0, mint = 0;
    map<int, int> cnt;
    cin >> n >> m;
    for (int i = 1; i <= n; ++i) {
        int l;
        cin >> l;
        set<int> t;
        for (int j = 1; j <= l; ++j) {
            int x;
            cin >> x;
            t.insert(x);
        }
        bool flag = true;
        int u, v;
        for (int j = 0;; ++j) {
            if (!t.count(j)) {
                if (flag) {
                    flag = false;
                    u = j;
                    mint = max(mint, u);
                } else {
                    v = j;
                    break;
                }
            }
        }
        s = max(s, v);
        son[v].push_back(u);
        cnt[u]++;
    }
    for (int i = 0; i <= s; ++i) {
        dp[i] = -1;
    }
    for (int i = s; i >= 0; --i) {
        if (dp[i] == -1) dp[i] = i;
        for (int j : son[i]) {
            dp[j] = max(dp[j], dp[i]);
        }
    }
    int pp = 0;
    for (int i = 0; i <= s; ++i) {
        if (i <= mint) dp[i] = max(dp[i], mint);
    }
    for (auto i : cnt) {
        if (i.second >= 2) pp = max(pp, dp[i.first]);
    }
    for (int i = 0; i <= s; ++i) {
        dp[i] = max(dp[i], pp);
    }
    for (int i = 0; i <= s; ++i) {
        son[i].clear();
    }
    if (m <= s) {
        int sum = 0;
        for (int i = 0; i <= m; ++i) {
            sum += dp[i];
        }
        cout << sum << endl;
        return;
    }
    int sum = 0;
    for (int i = 0; i <= s; ++i) {
        sum += dp[i];
    }
    sum += interval(s + 1, m);
    cout << sum << endl;
}
signed main() {
    cin.tie(0);
    cout.tie(0);
    ios_base::sync_with_stdio(0);

    int t;
    cin >> t;
    while (t--) solve();
    return 0;
}

please zltzlt and Mike Mirzayanov do the testing again and ban all the accounts with these and similar solutions. Thank you and please upvote.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +28
  • Проголосовать: не нравится