Submission #496690

#TimeUsernameProblemLanguageResultExecution timeMemory
496690Hanksburger식물 비교 (IOI20_plants)C++17
19 / 100
217 ms5828 KiB
#include "plants.h" #include <bits/stdc++.h> using namespace std; int S[200005], T[200005], N, K; bool subtask1, subtask2; vector<int> R; void init(int k, vector<int> r) { N=r.size(); K=k; R=r; if (K==2) { subtask1=1; for (int i=0; i<N; i++) { for (int j=i+1; j<N; j++) { if (R[i]!=R[j]) { for (int l=i; l<j; l++) S[l]=j; i=j-1; break; } } if (S[i]==0) { for (int j=0; j<i; j++) { if (R[i]!=R[j]) { for (int l=i; l<N; l++) S[l]=j; i=N-1; break; } } } } } else if (N<=5000 && 2*K>N) { subtask2=1; for (int i=1; i<=N; i++) { int cnt=0; for (int j=N-K+1; j<N; j++) { if (R[j] || T[j]) cnt++; else cnt=0; } for (int j=0; j<N; j++) { if (R[j] || T[j]) { cnt++; continue; } if (cnt>=K-1) { T[j]=i; for (int l=(j-K+1+N)%N; l!=j; l=(l+1)%N) R[l]--; break; } cnt=0; } } } } int compare_plants(int x, int y) { if (subtask1) { if (S[x]>=y || S[x]<x) { if (R[x]) return -1; else return 1; } else if (S[y]>=x && S[y]<y) { if (R[y]) return 1; else return -1; } return 0; } else if (subtask2) { if (T[x]<T[y]) return 1; else return -1; } }

Compilation message (stderr)

plants.cpp: In function 'int compare_plants(int, int)':
plants.cpp:101:1: warning: control reaches end of non-void function [-Wreturn-type]
  101 | }
      | ^
#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...