제출 #258140

#제출 시각아이디문제언어결과실행 시간메모리
258140tqbfjotldDevil's Share (RMI19_devil)C++14
0 / 100
1588 ms1528 KiB
#include <bits/stdc++.h> using namespace std; ///i have no idea what i'm doing at this point int arr[11]; string mult(string s, int num){ string res = ""; for (int x = 0; x<num; x++){ res += s; } // printf("was multing %s by %d\n",s.c_str(),num); return res; } struct compa{ bool operator()(pair<string,int> a,pair<string,int> b){ for (int x = 0; x<min(a.first.size(),b.first.size()); x++){ if (a.first[x]!=b.first[x]) return a.first[x]<b.first[x]; } return a.first.size()>b.first.size(); } }; int main(){ int test; scanf("%d",&test); while (test--){ int k,n=0; scanf("%d",&k); for (int x = 1; x<10; x++){ scanf("%d",&arr[x]); n+= arr[x]; } multiset<pair<string,int>,compa >s; string curbig = ""; int temp = 0; int curnum = 0; for (int x = 1; x<10; x++){ string te = ""; te += ('0'+x); if (arr[x]!=0) temp += arr[x]; //printf("temp is now %d\n",temp); if (temp>n-k&&curnum==0){ curbig += ('0'+x); curnum = arr[x]-(temp-n+k-1); //printf("curbig should be %c\n",'0'+x); //printf("curbig is [%s]\n",curbig.c_str()); if (temp-n+k-1!=0) s.insert({te,temp-n+k-1}); }else s.insert({te,arr[x]}); } while (curbig.size()<k && !s.empty()){ // printf("curbig is %s, curnum is %d\n",curbig.c_str(),curnum); auto it = s.begin(); //printf("first item is %s,%d\n",(*it).first.c_str(),(*it).second); if ((*it).first+(*it).first>curbig && curnum!=1){ curbig = mult(curbig,curnum); curnum = 1; continue; } if ((*it).second<curnum){ curnum -= (*it).second; string t = (*it).first; int t2 = (*it).second; s.erase(it); s.insert({curbig+t,t2}); continue; } string t = (*it).first; int num = (*it).second; s.erase(it); if (num-curnum>0){ s.insert({t,num-curnum}); } curbig += t; } printf("%s",mult(curbig,curnum).c_str()); for (auto x : s){ printf("%s",mult(x.first,x.second).c_str()); } printf("\n"); } }

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

devil.cpp: In member function 'bool compa::operator()(std::pair<std::__cxx11::basic_string<char>, int>, std::pair<std::__cxx11::basic_string<char>, int>)':
devil.cpp:18:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int x = 0; x<min(a.first.size(),b.first.size()); x++){
                     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
devil.cpp: In function 'int main()':
devil.cpp:56:29: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         while (curbig.size()<k && !s.empty()){
                ~~~~~~~~~~~~~^~
devil.cpp:28:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d",&test);
     ~~~~~^~~~~~~~~~~~
devil.cpp:31:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d",&k);
         ~~~~~^~~~~~~~~
devil.cpp:33:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
             scanf("%d",&arr[x]);
             ~~~~~^~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...