最早出現的M必然小於sum/2
是說這是第一次用map :3
#include<stdio.h> #include<stdlib.h> #include<algorithm> #include<cstring> #include<vector> #include<map> using namespace std; map<int,int>list; vector<int> vec; int main() { int T;scanf("%d",&T); while(T--) { int N;scanf("%d",&N); int Line[200]; int sum=0; for(int lx=0;lx<N;lx++) { scanf("%d",&Line[lx]); sum+=Line[lx]; } sort(Line,Line+N); list.clear();list[0]=1; bool OK=false; map<int,int>::iterator it; for(int lx=0;(lx<N)&&(OK==false);lx++) { vec.clear(); if(2*Line[lx]>sum) break; for(it=list.begin();(it!=list.end());++it) vec.push_back(it->first); for(int ly=0;(ly<vec.size())&&(OK==false);ly++) { if(2*(vec[ly]+Line[lx])>sum) break; list[vec[ly]+Line[lx]]++; if(list[vec[ly]+Line[lx]]>=2) OK=true; } //printf("\n=========\n");^M } if(OK) printf("Time to show my power!\n"); else printf("I hate this number set!\n"); } return 0; }
沒有留言:
張貼留言