Skip to content

Commit 4e7da22

Browse files
committed
srm 207 div 1 500 sol
1 parent 62c6195 commit 4e7da22

File tree

1 file changed

+13
-30
lines changed

1 file changed

+13
-30
lines changed

TCSocks.cpp

Lines changed: 13 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -20,27 +20,17 @@ int maxp = 0, n = 0;
2020
int city[10][105];
2121
int C[10][10], T[10][10];
2222
vi money;
23+
int visited[15];
2324

24-
void solve(vi v){
25-
vi uv;
26-
int curr = 0, t = 0, p = 0;
27-
v.push_back(0);
28-
for(int i : v){
29-
t += T[curr][i];
30-
p -= C[curr][i];
31-
p += money[i]/city[i][t];
32-
curr = i;
33-
}
34-
maxp = max(p, maxp);
35-
v.pop_back();
36-
for(int i = 1; i < n; i++)
37-
if(find(v.begin(), v.end(), i) == v.end())
38-
uv.push_back(i);
25+
void solve(int pos, int time, int profit){
3926

40-
for(int i : uv){
41-
v.push_back(i);
42-
solve(v);
43-
v.pop_back();
27+
maxp = max(profit-C[pos][0], maxp);
28+
for(int i = 1; i < n; i++){
29+
if(visited[i] == 1) continue;
30+
visited[i] = 1;
31+
int t = time+T[pos][i];
32+
solve(i, t, profit-C[pos][i]+(money[i]/city[i][t]));
33+
visited[i] = 0;
4434
}
4535
}
4636

@@ -58,13 +48,10 @@ class TCSocks{
5848
for(int i = 0; i < n; i++){
5949
stringstream ss(cost[i]), st(time[i]);
6050
for(int j = 0; j < n; j++){
61-
int k;
62-
ss>>k;
63-
C[i][j] = k;
64-
st>>k;
65-
T[i][j] = k;
51+
ss>>C[i][j];
52+
st>>T[i][j];
6653
}
67-
}
54+
}
6855

6956
for(string s : competitors){
7057
stringstream ss(s);
@@ -76,11 +63,7 @@ class TCSocks{
7663
}
7764
}
7865

79-
for(int i = 1; i < n; i++){
80-
vi s(1, i);
81-
solve(s);
82-
}
83-
66+
solve(0, 0, 0);
8467
return maxp;
8568
}
8669

0 commit comments

Comments
 (0)