two points
don't used hash table
#includeuse hash table#include using namespace std;const int INF=0x7fffffff;const int N=100003;int coin[N];int n,needSum;void findCoins(){ int i=0,j=n-1; int lowMinCoin=INF,left=-1,right=-1; while(i needSum) j--; else i++; } if(left==-1&&right==-1) printf("No Solution\n"); else printf("%d %d\n",left,right);}int main(){ scanf("%d%d",&n,&needSum); for(int i=0;i
#include#include const int INF=501;const int N=503;int hash[N];int n,needSum;void findCoins(){ int i=1,j=500; int lowMinCoin=INF,left=-1,right=-1; while(i<=j){ if(i==j){ if(hash[i]<2) break; } if(hash[i]>0){ if(hash[j]>0){ if(i+j==needSum){ if(i needSum) j--; else i++; } else j--; } else i++; } if(left==-1&&right==-1) printf("No Solution\n"); else printf("%d %d\n",left,right);}int main(){ memset(hash,0,sizeof(hash)); scanf("%d%d",&n,&needSum); for(int i=0;i