Cod sursa(job #3235273)

Utilizator DistroZLeonStinga Alexandru DistroZLeon Data 16 iunie 2024 17:57:34
Problema Interclasari Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.65 kb
#include <iostream>
#include <fstream>
using namespace std;
int H[20000001],matrix[21][1000001],indice[21];
int father(int nod, int H[]) {
    return nod / 2;
}

int left_son(int nod, int H[]) {
    return nod * 2;
}

int right_son(int nod, int H[]) {
    return nod * 2 + 1;
}
void HeapUp(int K,int H[]) {
    while(K > 1 && H[K] < H[father(K,H)]) {
        swap(H[K], H[father(K,H)]);
        K = father(K,H);
    }
}
void HeapDown(int N, int K, int H[]) {
    while(true) {
        int son = 0;
        if(left_son(K,H) <= N) {
            son = left_son(K,H);
            if(right_son(K,H) <= N && H[right_son(K,H)] < H[son]) {
                son = right_son(K,H);
            }
        }
        if(son && H[son] < H[K]) {
            swap(H[son], H[K]);
            K = son;
        } else {
            break;
        }
    }
}
void insert(int &N, int value, int H[]) {
            H[++N] = value;
            HeapUp(N,H);
        }
void Delete(int& N, int K, int H[]) {
    swap(H[K], H[N]);
    N--;
    if ((K > 1) && (H[K] < H[father(K,H)])) {
        HeapUp(K,H);
    } else {
        HeapDown(N, K,H);
    }
}
int main(){
    int k,x,s=0,lung=0,maxim=0;
    ifstream fin("interclasari.in");
    ofstream fout("interclasari.out");
    fin>>k;
    for(int i=1;i<=k;++k){
        fin>>x;
        s+=x;
        if(maxim<x)maxim=x;
        for(int j=1;j<=x;++j)fin>>matrix[i][j];
    }
    for(int i=0;i<s;){
        int minim=1000000001,min_ind=0;
        for(int j=1;j<=k;j++)
            if(matrix[j][indice[j]]<minim){
                minim=matrix[j][indice[j]];
                min_ind=j;
            }
    }
}