Просмотр исходного кода Задача Время 14 14 13 5-10-14 Язык Visual 2010

 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
64
65
66
67
68
Просмотр исходного кода
Задача: 4
Время: 14:14:13 5-10-14
Язык: Visual C/C++ 2010
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
#include <string>
#include <cstdio>
#include <iomanip>
#include <numeric>
#include <set>
#include <stack>
#include <queue>
using namespace std;
int main(){
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
int n, k, s;
cin >> n >> k >> s;
vector<int> ans;
for (int i = 1; i <= k; ++i) {
int x = i;
if (s - x >= n - 1 && s - x <= (n - 1) * k)
ans.push_back(x);
}
if (ans.size() == 1) {
cout << ans[0] << " " << ans[0] << " " << ans[0] << " " << ans[0] << endl;
return 0;
}
else {
int a, b = 0, c = (int)1e8, d;
a = ans[0];
d = ans[ans.size() - 1];
int treshold = k / 2 + (k % 2);
if (ans.size() != 3) {
b = ans[ans.size() / 2 - 1];
c = ans[ans.size() / 2];
}
else {
b = ans[ans.size() / 2];
c = ans[ans.size() / 2];
}
/*for (int i = 0; i < ans.size(); ++i) {
if (ans[i] < treshold)
b = max(b, ans[i]);
else if (ans[i] == treshold) {
b = max(b, ans[i]);
if (s - 2 * ans[i] >= n - 2 && s - 2 * ans[i] <= (n - 2) * k)
c = min(c, ans[i]);
}
else
c = min(c, ans[i]);
}*/
cout << a << " " << b << " " << c << " " << d << endl;
}
return 0;
}