제출 #303235

#제출 시각아이디문제언어결과실행 시간메모리
303235daniel920712식물 비교 (IOI20_plants)C++14
5 / 100
147 ms20860 KiB
#include "plants.h" #include <stdio.h> #include <vector> #include <utility> #include <set> using namespace std; vector < int > all; vector < int > Next[200005]; vector < pair < int , int > > con[200005]; int N,tt=0; bool use[2000005]={0}; int Con[200005]; int what[200005]; set < int > A; set < int > B; void init(int k,vector<int> r) { int a=0,b=0,i,j,ok=0,l,t,t2,x; all=r; N=r.size(); if(k==2) tt=1; for(i=0;i<N;i++) { if(k==2) { if(r[(i+N-1)%N]!=r[i]) { b=0; a++; con[i].push_back(make_pair(a,0)); for(j=(i+1)%N;r[(j+N-1)%N]==r[i];j=(j+1)%N) { if(j==N-1) ok=1; if(r[i]==0) b--; else b++; con[j].push_back(make_pair(a,b)); } } } else { for(i=0;i<N;i++) { if(r[i]==0) { for(j=1;j<k;j++) { t=(i+j)%N; if(use[t]==0&&A.find(t)!=A.end()) { Con[t]++; if(B.find(t)!=B.end()) B.erase(t); } } B.insert(i); A.insert(i); } } for(i=0;i<N;i++) { x=*B.begin(); use[x]=1; what[x]=i; for(j=1;j<k;j++) { t=(i+j)%N; if(use[t]==0&&A.find(t)!=A.end()) { Con[t]--; if(Con[t]==0) if(B.find(t)!=B.end()) B.insert(t); } } for(j=1;j<k;j++) { t=(i-j+2*N)%N; if(use[t]==0&&A.find(t)==A.end()) { r[t]--; if(r[t]==0) { for(l=1;l<k;l++) { t2=(i+l)%N; if(use[t2]==0&&A.find(t2)!=A.end()) { Con[t2]++; if(B.find(t2)!=B.end()) B.erase(t2); } } B.insert(t); A.insert(t); } } } } } } return; } bool F(int A,int B) { if(A==B) return 1; if(use[A]) return 0; use[A]=1; for(auto i:Next[A]) if(F(i,B)) return 1; return 0; } int compare_plants(int x, int y) { int i; if(tt) { for(auto i:con[x]) { for(auto j:con[y]) { if(i.first==j.first) { if(i.second<j.second) return -1; return 1; } } } } else { if(what[x]<what[y]) return 1; else return -1; } return 0; }

컴파일 시 표준 에러 (stderr) 메시지

plants.cpp: In function 'void init(int, std::vector<int>)':
plants.cpp:18:21: warning: variable 'ok' set but not used [-Wunused-but-set-variable]
   18 |     int a=0,b=0,i,j,ok=0,l,t,t2,x;
      |                     ^~
plants.cpp: In function 'int compare_plants(int, int)':
plants.cpp:121:9: warning: unused variable 'i' [-Wunused-variable]
  121 |     int i;
      |         ^
#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...