[Offer收割]编程练习赛1 register

Ended

Participants:955

Verdict:Accepted
Score:100 / 100
Submitted:2016-03-06 16:57:17

Lang:G++

Edit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int a[4][4];
int b[1010];
int c[1010];
vector<int> B,C;
vector<int> tmp;
int n,m,t,s;
int cal_B(int b){
    tmp.clear();
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            int tt=1<<(i*m+j);
            if((b&tt)!=0){
                tmp.push_back(a[i][j]);
            }
        }
    }
    if(tmp.size()>0) sort(tmp.begin(),tmp.end());
    else return 0;
    //if(tmp.size()>B.size())return 0;
    int ans=0;
    int j=B.size()-1;
    for(int i=tmp.size()-1;i>=0;i--){
        if(j<0)break;
        ans += B[j]*tmp[i];
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX