제출 #399159

#제출 시각아이디문제언어결과실행 시간메모리
399159oolimry코알라 (APIO17_koala)C++17
72 / 100
98 ms328 KiB
#include "koala.h" #include<bits/stdc++.h> using namespace std; int minValue(int N, int W) { int B[N]; int R[N]; fill(B,B+N,0); fill(R,R+N,0); B[0] = 1; playRound(B,R); for(int i = 0;i < N;i++){ if(R[i] == 0) return i; } } int maxValue(int N, int W) { int B1[N], B2[N], B3[N], B4[N]; int R1[N], R2[N], R3[N], R4[N]; for(int i = 0;i < N;i++){ B1[i] = 1; } playRound(B1,R1); for(int i = 0;i < N;i++){ B2[i] = R1[i]; } playRound(B2,R2); for(int i = 0;i < N;i++){ if(R2[i] == 3) B3[i] = 4; else B3[i] = 0; } playRound(B3,R3); for(int i = 0;i < N;i++){ if(R3[i] == 5) B4[i] = 11; else B4[i] = 0; } playRound(B4,R4); for(int i = 0;i < N;i++){ if(R4[i] == 12) return i; } return 0; } int comp(int N, int W, int a, int b) { int B[N]; int R[N]; fill(B,B+N,0); B[a] = 4; B[b] = 4; playRound(B,R); if(R[a] == 0 && R[b] > 0) return 1; ///something stands out else if(R[a] > 0 && R[b] == 0) return 0; ///something stands out else if(R[a] == 0 && R[b] == 0){ fill(B,B+N,0); B[a] = 1; B[b] = 1; playRound(B,R); if(R[a] == 0) return 1; if(R[b] == 0) return 0; fill(B,B+N,0); B[a] = 3; B[b] = 3; playRound(B,R); if(R[a] == 0) return 1; if(R[b] == 0) return 0; } fill(B,B+N,0); B[a] = 7; B[b] = 7; playRound(B,R); if(R[a] == 0 && R[b] > 0) return 1; ///something stands out else if(R[a] > 0 && R[b] == 0) return 0; ///something stands out else if(R[a] == 0 && R[b] == 0){ fill(B,B+N,0); B[a] = 5; B[b] = 5; playRound(B,R); if(R[a] == 0 && R[b] > 0) return 1; ///something stands out else if(R[a] > 0 && R[b] == 0) return 0; ///something stands out } else{ fill(B,B+N,0); B[a] = 10; B[b] = 10; playRound(B,R); if(R[a] == 0 && R[b] > 0) return 1; ///something stands out else if(R[a] > 0 && R[b] == 0) return 0; ///something stands out } return 1; } int greaterValue(int N, int W){ return comp(N,W,0,1); } void allValues1(int n, int W, int *P){ int B[n]; int R[n]; int A[n]; for(int i = 0;i < n;i++) A[i] = i; stable_sort(A, A+n, [&](int a, int b){ fill(B,B+n,0); B[a] = n, B[b] = n; playRound(B,R); //for(int i = 0;i < n;i++) cerr << B[i] << " "; cout << '\n'; //for(int i = 0;i < n;i++) cerr << R[i] << " "; cout << "\n\n"; if(R[a] == 0) return true; else return false; }); for(int i = 0;i < n;i++) P[A[i]] = i+1; } void allValues2(int n, int W, int *P){ int A[n]; for(int i = 0;i < n;i++) A[i] = i; stable_sort(A, A+n, [&](int a, int b){ return comp(n,W,a,b); }); for(int i = 0;i < n;i++) P[A[i]] = i+1; } void allValues(int N, int W, int *P) { if (W == 2*N) allValues1(N, W, P); else allValues2(N, W, P); }

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

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