mirror of
https://github.com/wczffl-503/OI-Codes.git
synced 2025-07-07 18:06:58 +08:00
Add FZOI Codes
This commit is contained in:
49
FZOI/「USACO2007MAR」Monthly Expense.cpp
Normal file
49
FZOI/「USACO2007MAR」Monthly Expense.cpp
Normal file
@ -0,0 +1,49 @@
|
||||
#include <cstdio>
|
||||
#include <cstring>
|
||||
#include <algorithm>
|
||||
#include <cstdlib>
|
||||
#include <cmath>
|
||||
using namespace std;
|
||||
int a[110000];
|
||||
int s[110000];
|
||||
int n, m;
|
||||
bool check(int x)
|
||||
{
|
||||
int len = 1, d = 0;
|
||||
for (int i = 1; i <= n; i++)
|
||||
{
|
||||
if (a[i] > x)
|
||||
return false;
|
||||
if (d + a[i] > x)
|
||||
{
|
||||
len++;
|
||||
d = a[i];
|
||||
if (len > m)
|
||||
return false;
|
||||
}
|
||||
else
|
||||
d += a[i];
|
||||
}
|
||||
return true;
|
||||
}
|
||||
int main()
|
||||
{
|
||||
scanf("%d%d", &n, &m);
|
||||
for (int i = 1; i <= n; i++)
|
||||
scanf("%d", &a[i]);
|
||||
int l = 0, r = 1000000000;
|
||||
int ans = 0;
|
||||
while (l <= r)
|
||||
{
|
||||
int mid = (l + r) / 2;
|
||||
if (check(mid) == true)
|
||||
{
|
||||
ans = mid;
|
||||
r = mid - 1;
|
||||
}
|
||||
else
|
||||
l = mid + 1;
|
||||
}
|
||||
printf("%d\n", ans);
|
||||
return 0;
|
||||
}
|
Reference in New Issue
Block a user