제출 #1132138

#제출 시각아이디문제언어결과실행 시간메모리
1132138StefanSebez식물 비교 (IOI20_plants)C++20
0 / 100
4091 ms6132 KiB
#include <bits/stdc++.h> #include "plants.h" using namespace std; #define fi first #define se second #define pb push_back #define ll long long #define ld long double const int N=2e5+50; int k,n; int pref[2*N],r[2*N],a[N]; int Plus(int i,int x){i+=x;while(i<1)i+=n;while(i>n)i-=n;return i;} int suma(int l,int r){ if(l<=r) return pref[r]-pref[l-1]; return pref[r+n]-pref[l-1]; } int dist(int l,int r){ if(l<=r) return r-l+1; return n+(r-l+1); } void init(int k1, std::vector<int> r1){ k=k1;n=r1.size(); for(int i=1;i<=n;i++) r[i]=r1[i-1]; for(int i=n+1;i<=2*n;i++) r[i]=r[i-n]; bool was[n+10]={false}; for(int c=n;c>=1;c--){ int ind=-1,maks=0; for(int i=1;i<=n;i++){ if(was[i]||r[i]!=0) continue; int nesto=1e9; for(int j=Plus(i,-1),ct=k-1;ct--;j=Plus(j,-1)){ if(was[j]) continue; nesto=min(nesto,r[j]); } if(nesto>maks){ maks=nesto,ind=i; } } a[ind]=c; was[ind]=true; for(int j=Plus(ind,-1),ct=k-1;ct--;j=Plus(j,-1)){ if(was[j]) continue; r[j]--; } //for(int i=1;i<=n;i++) printf("%i ",r[i]);printf("\n"); } //for(int i=1;i<=n;i++) printf("%i ",a[i]);printf("\n"); } int compare_plants(int x, int y){ x++,y++; if(a[x]>a[y]) return 1; if(a[x]<a[y]) return -1; return 0; }
#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...