2019.9.15バイトジャンプ第4ラウンド筆記試験
2173 ワード
Kを超えない3つの数
タイトルの説明:
長さnの配列arrと数kを与え,配列中にk未満の3つの数がどれだけあるか,すなわちarr[a]+arr[b]+arr[c]入力説明:第1の動作は、入力配列の長さを表す整数nである
2番目の動作n個の整数をスペースで区切る
第3の動作の整数k出力記述 1つの整数mは、条件に合致する3元グループがどれだけあるかを表す.
入力
6
-2 0 1 2 3 6
しゅつりょく
4
説明
4つの三元グループの和が2未満である.
[-2,0,1]
[-2,0,2]
[-2,0,3]
[-2,1,2]
ファイル転送
サーバはデータバックアップ中で、ファイルを転送する必要があります.任意の時間に1つのファイルしか転送できません.1つのファイルの転送には1秒かかります.nバッチファイルが存在し、このバッチファイルが転送キューに追加された時間t(単位/秒)、およびこのバッチファイルの個数cが知られている.
転送キューのファイルは1秒に1つの熟読で転送されますが、ファイルの転送を担当している学生は、すべてのファイルが転送された時刻と、胡キューのファイルの最大スタック数を伝えたいと思っています.
説明を入力:
最初の行はnバッチファイルを表す整数です.次に、n行の各行の2つの整数t,cは、このファイルがキューに追加された時間と、このファイルの個数を表す.
出力の説明:
1行2つの整数を出力し、すべてのファイルが転送された時刻と転送キュー内のファイルスタックセットの最大数を出力します.
例:
入力:
3
1 1
2 1
3 1
出力:
4 1
入力:
3
1 3
2 3
3 3
しゅつりょく
10 7
タイトルの説明:
長さnの配列arrと数kを与え,配列中にk未満の3つの数がどれだけあるか,すなわちarr[a]+arr[b]+arr[c]
2番目の動作n個の整数をスペースで区切る
第3の動作の整数k
入力
6
-2 0 1 2 3 6
しゅつりょく
4
説明
4つの三元グループの和が2未満である.
[-2,0,1]
[-2,0,2]
[-2,0,3]
[-2,1,2]
#include
#include
#include
using namespace std;
int main() {
int n;
cin >> n;
vector data(n, 0);
int x;
for (int i = 0; i < n; i++) {
cin >> x;
data[i] = x;
}
int k;
cin >> k;
sort(data.begin(), data.end());
int cnt = 0;
for (int r = data.size() - 1; r >= 2; r--) {
int l = 0, m = r - 1;
while (l < m) {
int sum = data[r] + data[m] + data[l];
if (sum >= k) {
m--;
}
else {
cnt += m - l;
l++;
}
}
}
cout <
ファイル転送
サーバはデータバックアップ中で、ファイルを転送する必要があります.任意の時間に1つのファイルしか転送できません.1つのファイルの転送には1秒かかります.nバッチファイルが存在し、このバッチファイルが転送キューに追加された時間t(単位/秒)、およびこのバッチファイルの個数cが知られている.
転送キューのファイルは1秒に1つの熟読で転送されますが、ファイルの転送を担当している学生は、すべてのファイルが転送された時刻と、胡キューのファイルの最大スタック数を伝えたいと思っています.
説明を入力:
最初の行はnバッチファイルを表す整数です.次に、n行の各行の2つの整数t,cは、このファイルがキューに追加された時間と、このファイルの個数を表す.
出力の説明:
1行2つの整数を出力し、すべてのファイルが転送された時刻と転送キュー内のファイルスタックセットの最大数を出力します.
例:
入力:
3
1 1
2 1
3 1
出力:
4 1
入力:
3
1 3
2 3
3 3
しゅつりょく
10 7
#include
#include
using namespace std;
int main() {
int N;
cin >> N;
int time, n;
queue q;
int max_n = 0;
int t = 1;
for (int i = 0; i < N; i++) {
cin >> time >> n;
int k = 1;
if (!q.empty()) {
k = q.back();
}
int timedis = time - k;
while (!q.empty() && timedis > 0) {
q.pop();
timedis--;
}
for (int i = 0; i < n; i++) {
q.push(time);
}
max_n = max(max_n, (int)q.size());
t = max(t, time);
}
t += q.size();
cout << t << ' ' << max_n;
}