-
Notifications
You must be signed in to change notification settings - Fork 0
/
flowlayout.cpp
63 lines (49 loc) · 1.01 KB
/
flowlayout.cpp
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
ll length;
while(cin>>length && length != 0)
{
ll l,w;
vector<vector<pair<int,int>>> window;
ll currWidth = 0;
vector<pair<int,int>> temp;
while(cin >>l && cin >>w && (l!=-1 || w != -1))
{
if(length >= (l+currWidth))
{
currWidth += l;
temp.push_back(make_pair(l,w));
}
else
{
window.push_back(temp);
temp.clear();
currWidth = 0;
currWidth += l;
temp.push_back(make_pair(l,w));
}
}
if(!temp.empty())
window.push_back(temp);
ll totalLength = 0;
ll totalWidth = 0;
for(int i = 0; i < window.size(); i++)
{
ll maxWidth = 0;
ll temp = 0;
for(int j = 0; j < window[i].size(); j++)
{
if(maxWidth < window[i][j].second)
maxWidth = window[i][j].second;
temp += window[i][j].first;
}
if(temp > totalLength)
totalLength = temp;
totalWidth += maxWidth;
}
cout<<totalLength<<" x "<<totalWidth<<endl;
}
}