Submission #1182989

#TimeUsernameProblemLanguageResultExecution timeMemory
1182989abdalrhman_sfarBring Down the Grading Server (CEOI23_gradingserver)C++20
0 / 100
3 ms4164 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long

const int N=1e5+5;
int cnt[N];

signed main() {
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    int n,s,t; cin >> n >> s >> t;
    vector<vector<int>> v(n,vector<int>(s));
    int i,j;
    map<pair<int,int>,int> mp; // [color,row]
    vector<set<int>> st(t+1);
    for (i=0;i<n;++i) {
        for (auto&it:v[i]) {
            cin >> it;
            ++cnt[it];
            ++mp[{it,i}],st[it].insert(i);
        } sort(v[i].begin(),v[i].end());
    }
    vector<int> v1,v2; // v1 = norms , v2 = remainders
    for (i=1;i<=t;++i) {
        for (j=0;j<(cnt[i]/s);++j)
            v1.emplace_back(i);
        for (j=0;j<(cnt[i]%s);++j)
            v2.emplace_back(i);
    } int ans[n][s];
    for (i=0;i<s;++i) {
        set<int> ss;
        for (j=0;j<n;++j) ss.insert(j);
        if (v2.size()) {
            int it=*st[v2[i]].begin();
            int a = --mp[{v2[i],it}];
            if (a==0) st[v2[i]].erase(it);
            ans[it][i]=v2[i]; ss.erase(it);
        }
        for (auto&it:v1) {
            int a,id;
            for (auto&k:st[it]) {
                if (ss.count(k)) {
                    a = --mp[{it,k}],id=k;
                    ss.erase(k); ans[k][i]=it;
                }
            }
            if (a==0) st[it].erase(id);
        }
    }
    for (i=0;i<n;++i) {
        for (j=0;j<s;++j)
            cout << ans[i][j] << ' ';
        cout << '\n';
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...