Submission #1316476

#TimeUsernameProblemLanguageResultExecution timeMemory
1316476opeleklanosComparing Plants (IOI20_plants)C++20
14 / 100
4094 ms5808 KiB
#include <iostream>
#include <vector>
#include <queue>
#include "plants.h"
using namespace std;

int k;
int n;
vector<int> r;
vector<int> perm;

void init(int k1, vector<int> r1){
    k = k1;
    r = r1;
    n = r1.size();
    perm.assign(n, -1);
    
    for(int i = 0; i<n; i++){
        priority_queue<int, vector<int>, greater<int>> zindx;
        for(int j = n-k+1; j<n; j++) if(r[j] == 0) zindx.push(j);
        for(int j = 0; j<n; j++){
            if(r[j] != 0 || perm[j] != -1) continue;
            while(!zindx.empty() && zindx.top() <= j+n-k) zindx.pop();
            if(!zindx.empty())zindx.push(j+n);
            else{
                for(int l = (j-k+n+1)%n; l != j; l = (l+1)%n) r[l] --;
                perm[j] = n-i-1;
                r[j] = -1;
                break;
            }
        }
    }
}


int compare_plants(int x, int y){
    
    if(perm[x] > perm[y]) return 1;
    if(perm[x] < perm[y]) return -1;
    return 0;
}

// int main(void){
//     freopen("input.txt", "r", stdin);
//     vector<int> r1;
//     int n1, k1;
//     cin>>n1>>k1;
//     r1.assign(n1, 0);
//     for(int i = 0; i<n1; i++){
//         cin>>r1[i];
//     }
//     init(k1, r1);
//     int q; cin>>q;
//     for(int i = 0; i<q; i++){
//         int a, b;
//         cin>>a>>b;
//         cout<<compare_plants(a, b)<<endl;
//     }
// }
#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...