Submission #1211894

#TimeUsernameProblemLanguageResultExecution timeMemory
1211894XCAC197Teams (IOI15_teams)C++20
Compilation error
0 ms0 KiB
//#include "teams.h"
#include <vector>
#include <queue>
#include <iostream>
#include <algorithm>
#define ll long long
using namespace std;

int N;
pair<int,int> ivs [500000];


int cNod = 5;
//roots[i] = all the rs after l
int roots [500000];
ll val [5000000];
int lc [5000000];
int rc [5000000];

int nnod(){
    cNod++;
    return cNod;
}

int build(int cur, int l, int r){
    if(l == r){
        return cur;
    }else{
        lc[cur] = nnod();
        rc[cur] = nnod();
        build(lc[cur], l, (l+r)/2);
        build(rc[cur], (l+r)/2+1, r);
        return cur;
    }
}

int change(int cur, int l, int r, int x){
    if(l <= x && x <= r){
        int ncur = nnod();
        val[ncur] = val[cur]+1;
        if(l != r){
            lc[ncur] = change(lc[cur], l, (l+r)/2, x);
            rc[ncur] = change(rc[cur], (l+r)/2+1, r, x);
        }
        return ncur;
    }else{
        return cur;
    }
}

ll query(int cur, int l, int r, int fl, int fr){
    if(l <= fl && fr <= r){
        return val[cur];
    }else if(fr < l || r < fl){
        return 0;
    }else{
        return query(lc[cur], l, (l+r)/2, fl, fr) + query(rc[cur], (l+r)/2+1, r, fl, fr);
    }
} 


void init(int N_, int A_[], int B_[]) {
    N = N_;
    for(int i = 0; i < N; i++){
        ivs[i] = make_pair(A_[i], B_[i]);
    }
    sort(ivs, ivs+N);
    roots[0] = build(nnod(), 1, N);
    int c = 0;
    for(int i = 1; i <= N; i++){
        int croot = roots[i-1];
        while(c != N && i != ivs[c].first){
            croot = change(croot, 1, N, ivs[c].second);
        }
        roots[i] = croot;
    }
}

int can(int M, int K[]) {
    sort(K, K+M);
    int su = 0;
    for(int i = 0; i < M; i++){
        su += K[i];
    }
    if(su > N){
        return 0;
    }else{
        for(int i = 0; i < M; i++){
            int tot = query(roots[K[i]], 1, N, K[i], N);//counts how many intervals i slice
            //some of the intervals may be sliced by previous intervals...
            if(tot >= K[i]){
                tot -= K[i];
            }else{
                break;
            }
            //updates
        }
        return 1;
    }
}

int main(){

}

Compilation message (stderr)

/usr/bin/ld: /tmp/ccIktYNX.o: in function `main':
grader.c:(.text.startup+0x0): multiple definition of `main'; /tmp/ccOoI9T9.o:teams.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status