Submission #805682

#TimeUsernameProblemLanguageResultExecution timeMemory
805682JkapComparing Plants (IOI20_plants)C++14
5 / 100
59 ms8680 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define si unordered_set<int>
#define vi vector<int>

int di[200005];
int ri[200005];

void init(int k, vi r) {
  int x=0;
  int n = r.size();

  for (int i=n-1; i>=0; i--) {
    if (r[i] != r[n-1]) {
      x = i+1;
      break;
    }
  }
  int curr = x;
  for (int i=x+n-1; i>=x; i--) {
    if (r[i%n] == r[curr]) {
      curr = (i+1) %n;
    }
    di[i%n] = curr;
    ri[i%n] = r[i%n];
  }
  
}

int compare_plants(int x, int y) {
    int a = min(x, y), b = max(x, y), out=-1;
    if (di[a] >= b || di[a] < a) {
        out = 1-ri[a];
    }
    else if (di[b] < b && di[b] >=a) {
        out = ri[b];
    }
    if (out == -1) {
        return 0;
    }
    if (y==a) {
        out = 1-out;
    }
    if (out == 0) {
        out --;
    }
    return out;
    
}
#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...