n = int(input().strip()) a = list(map(int, input().strip().split())) a = list(map(abs, a)) a.sort() res = 0 j = 0 for i in range(n-1): while j < n and a[i] * 2 >= a[j]: j += 1 res += (j - i - 1) print(res)
20%
#include<iostream> #include<cstdio> #include<cstdlib> #include<string> #include<cstring> #include<climits> #include<vector> #include<queue> #include<algorithm> #include<stack> #include<sstream> #include<set> using namespace std; typedef long long ll; vector<pair<int,int> > vec; bool cmp(pair<int,int> a,pair<int,int> b){ return b.first*(ll)b.second<a.first*(ll)a.second; } int main(){ int n,k; cin>>n>>k; int x,y; for(int i=0;i<n;i++){ cin>>x>>y; vec.push_back(pair<int,int>(x,y)); } sort(vec.begin(),vec.end(),cmp); long long ans=0,temp; int min=INT_MAX,sum=0; for(int i=0;i<n&&k>0;i++){ //cout<<vec[i].first<<" "<<vec[i].second<<endl; sum+=vec[i].first; if(vec[i].second<min) min=vec[i].second; temp=sum*min; if(temp>ans){ ans=temp; k--; } } cout<<ans<<endl; system("PAUSE"); return 0; }
20%
#include<iostream> #include<cstring> #include<string> #include<vector> #include<algorithm> #include<set> #include<map> using namespace std; int main(){ //freopen("E:\\data.txt","r", stdin); int n,m; scanf("%d %d\n", &n,&m); string str; vector<string> dic; //set<string> dic; map<string, bool> visit; for(int i=0;i<n;i++){ //scanf("%s",str); getline(cin,str); dic.push_back(str); //dic.insert(str); visit[str]=false; } sort(dic.begin(), dic.end()); string pre, end; for(int i=0;i<m;i++){ //scanf("%s %s", pre, end); cin>>pre>>end; bool flag=false; for(int j=0;j<n;j++){ string now = dic[j]; string nowpre = now.substr(0, pre.size()); string nowend = now.substr(0, end.size()); if(nowpre==pre&&nowend!=end&&visit[now]==false){ //printf("%s\n",now); cout<<now<<endl; visit[now]=true; flag=true; break; } } if(flag==false){ printf("-1\n"); } } return 0; }没全A
#include<iostream> #include<string> #include<vector> #include<cmath> using namespace std; long long power(int k, int n){ long long ans=1; for(int i=0;i<n;i++){ ans*=k; } return ans; } long long convert(string str, int k){ int len=str.length(); long long ans=0; for(int i=0;i<len;i++){ if(str[i]>='0'&&str[i]<='9'){ ans += (str[i]-'0')*power(k,len-1-i); }else{ ans += (str[i]-'A'+10)*power(k,len-1-i); } } return ans; } string out(long long ans, int k){ string temp; do{ int t = ans%k; ans /= k; if(t<10){ temp.insert(temp.begin(),t+'0'); }else{ temp.insert(temp.begin(),(t-10)+'A'); } }while(ans); return temp; } int main(){ //freopen("E:\\data.txt","r",stdin); int T; scanf("%d", &T); long long num1=0,num2=0; char op; int k; string str1,str2; long long ans; for(int i=0;i<T;i++){ cin>>k; cin>>str1>>str2>>op; //if(k!=10){ num1 = convert(str1,k); num2 = convert(str2,k); // } if(op=='+'){ ans= num1+num2; }else if(op=='-'){ ans = num1 -num2; }else{ ans = num1* num2; } string output = out(ans,k); cout<<output<<endl; } return 0; }