제출 #1180767

#제출 시각아이디문제언어결과실행 시간메모리
1180767MarwenElarbiKoala Game (APIO17_koala)C++17
100 / 100
35 ms460 KiB
#include "koala.h" #include <bits/stdc++.h> #include <stdio.h> #include <stdlib.h> using namespace std; int minValue(int N, int W) { int n=N; int tab[N]; int ans[N]; memset(tab,0,sizeof tab); tab[0]=1; playRound(tab,ans); int res=-1; for (int i = 0; i < n; ++i) { if(ans[i]==0) res=i; } if(res!=-1) return res; tab[0]=0; tab[1]=1; playRound(tab,ans); for (int i = 0; i < n; ++i) { if(ans[i]==0) res=i; } return res; } int maxValue(int N, int W) { int n=N; int tab[n]; int cur[n]; int still[n]; for (int i = 0; i < n; ++i) still[i]=1; for (int i = 0; i < n; ++i) tab[i]=1; int cnt=1; int h[4]={1,2,4,11}; while(cnt<5){ playRound(tab,cur); for (int i = 0; i < n; ++i) { if(cur[i]>h[cnt-1]) still[i]=1; else still[i]=0; if(still[i]==1) tab[i]=h[cnt]; else tab[i]=0; } cnt++; } int res; for (int i = 0; i < n; ++i) { if(still[i]==1) res=i; } return res; } int greaterValue(int N, int W) { int tab[100]; memset(tab,0,sizeof tab); int cur[100]; int l=1; int r=min(N/2+1,9); while(r>=l){ int mid=(r+l)/2; tab[0]=mid; tab[1]=mid; playRound(tab,cur); if(cur[0]<=mid&&cur[1]<=mid) r=mid-1; else l=mid+1; if(cur[0]<=mid&&cur[1]>mid) return 1; if(cur[1]<=mid&&cur[0]>mid) return 0; } } bool compare(int N,int i,int j){ int tab[N]; int cur[N]; memset(tab,0,sizeof tab); tab[i]=N; tab[j]=N; playRound(tab,cur); return (cur[i]>N ? 1 : 0); } vector<int> mergesort(int N,int l,int r){ if(l>r) return{}; if(l==r) { return {l}; } int mid=(r+l)/2; vector<int> a=mergesort(N,l,mid); vector<int> b=mergesort(N,mid+1,r); vector<int> cur; int j=0; for (int i = 0; i < a.size(); ++i) { while(j<b.size()&&compare(N,a[i],b[j])==1) cur.push_back(b[j++]); cur.push_back(a[i]); } while(j<b.size()) cur.push_back(b[j++]); return cur; } vector<int> arr(100); void sorting(int l,int r,vector<int> v){ if(l==r){ arr[v[0]]=l; return; } int k=min(int(sqrt(2*l)),int(100/(r-l+1))); //cout <<k<<endl; int a[100]; memset(a,0,sizeof a); int b[100]; for (int i = 0; i < v.size(); ++i) { a[v[i]]=k; } playRound(a,b); vector<int> less; vector<int> greater; for (int i = 0; i < v.size(); ++i) { if(b[v[i]]>k) greater.push_back(v[i]); else less.push_back(v[i]); } sorting(l,l+less.size()-1,less); sorting(r-greater.size()+1,r,greater); } void allValues(int N, int W, int *P) { if (W == 2*N) { vector<int> tab=mergesort(N,0,N-1); for (int i = 0; i < N; ++i) { P[tab[i]]=i+1; } } else { vector<int> v(100); for (int i = 0; i < 100; ++i) { v[i]=i; } sorting(1,100,v); for (int i = 0; i < 100; ++i) { P[i]=arr[i]; } } }

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

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