제출 #347561

#제출 시각아이디문제언어결과실행 시간메모리
347561nicholask코알라 (APIO17_koala)C++14
70 / 100
86 ms492 KiB
#include "koala.h" #include <bits/stdc++.h> using namespace std; int minValue(int N, int W) { // TODO: Implement Subtask 1 solution here. // You may leave this function unmodified if you are not attempting this // subtask. int b[N]={},r[N]={}; b[0]=1; playRound(b,r); if (r[0]<2) return 0; else { for (int i=1; i<N; i++){ if (r[i]<1) return i; } } return 0; } int maxValue(int N, int W) { // TODO: Implement Subtask 2 solution here. // You may leave this function unmodified if you are not attempting this // subtask. vector <int> rem; for (int i=0; i<N; i++) rem.push_back(i); while (rem.size()>1){ int b[N]={},r[N]={}; for (auto&i:rem) b[i]=W/rem.size(); playRound(b,r); vector <int> w; for (int i=0; i<N; i++){ if (b[i]&&r[i]>b[i]) w.push_back(i); } rem=w; } return rem[0]; } int greaterValue(int N, int W) { // TODO: Implement Subtask 3 solution here. // You may leave this function unmodified if you are not attempting this // subtask. int lb=1,rb=10; while (lb<rb){ int m=(lb+rb)>>1; int b[N]={},r[N]={}; b[0]=b[1]=m; playRound(b,r); if (r[0]<=b[0]&&r[1]<=b[1]) rb=m-1; else if (r[0]>b[0]&&r[1]>b[1]) lb=m+1; else if (r[0]>b[0]) return 0; else return 1; } int b[N]={},r[N]={}; b[0]=b[1]=lb; playRound(b,r); if (r[0]>b[0]) return 0; else return 1; } bool cmp(int x,int y){ int b[100]={},r[100]={}; b[x]=b[y]=100; playRound(b,r); return (r[x]<=b[x]); } vector <int> msort(vector <int> v){ if (v.size()==1) return v; vector <int> f,s; for (int i=0; i<v.size(); i++){ if (i<(v.size()+1)/2) f.push_back(v[i]); else s.push_back(v[i]); } f=msort(f); s=msort(s); vector <int> ans; int p1=0,p2=0; while (p1<f.size()&&p2<s.size()){ if (cmp(f[p1],s[p2])){ ans.push_back(f[p1]); p1++; } else { ans.push_back(s[p2]); p2++; } } for (int i=p1; i<f.size(); i++) ans.push_back(f[i]); for (int i=p2; i<s.size(); i++) ans.push_back(s[i]); return ans; } bool cmp1(int x,int y){ int lb=1,rb=10; while (lb<rb){ int m=(lb+rb)>>1; int b[100]={},r[100]={}; b[x]=b[y]=m; playRound(b,r); if (r[x]<=b[x]&&r[y]<=b[y]) rb=m-1; else if (r[x]>b[x]&&r[y]>b[y]) lb=m+1; else if (r[x]>b[x]) return 0; else return 1; } int b[100]={},r[100]={}; b[x]=b[y]=lb; playRound(b,r); if (r[x]>b[x]) return 0; else return 1; } void allValues(int N, int W, int *P) { if (W == 2*N) { // TODO: Implement Subtask 4 solution here. // You may leave this block unmodified if you are not attempting this // subtask. vector <int> v(N); for (int i=0; i<N; i++) v[i]=i; vector <int> ans=msort(v); for (int i=0; i<N; i++) P[ans[i]]=i+1; } else { // TODO: Implement Subtask 5 solution here. // You may leave this block unmodified if you are not attempting this // subtask. vector <int> v(N); for (int i=0; i<N; i++) v[i]=i; sort(v.begin(),v.end(),cmp1); for (int i=0; i<N; i++) P[v[i]]=i+1; } }

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

koala.cpp: In function 'std::vector<int> msort(std::vector<int>)':
koala.cpp:71:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   71 |  for (int i=0; i<v.size(); i++){
      |                ~^~~~~~~~~
koala.cpp:72:8: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   72 |   if (i<(v.size()+1)/2) f.push_back(v[i]);
      |       ~^~~~~~~~~~~~~~~
koala.cpp:79:11: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   79 |  while (p1<f.size()&&p2<s.size()){
      |         ~~^~~~~~~~~
koala.cpp:79:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   79 |  while (p1<f.size()&&p2<s.size()){
      |                      ~~^~~~~~~~~
koala.cpp:88:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   88 |  for (int i=p1; i<f.size(); i++) ans.push_back(f[i]);
      |                 ~^~~~~~~~~
koala.cpp:89:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   89 |  for (int i=p2; i<s.size(); i++) ans.push_back(s[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...