Câu 1: (6 điểm) Tổng
Trong một buổi học Toán, Cô giáo tổ chức trò chơi “Ai nhanh nhất” với luật chơi như sau: Cô có N gói kẹo được đánh số từ 1 đến N, gói thứ i sẽ có Ai cái kẹo; Nhiệm vụ của người chơi là chỉ được chọn 2 gói kẹo có tổng bằng số K cho trước. Người nào chọn được số cặp gói kẹo thỏa mãn nhanh nhất sẽ chiến thắng và nhận được các gói kẹo đó.
Dữ liệu vào: Đọc tệp tong.inp có cấu trúc như sau:
Dòng 1: Chứ 2 số nguyên N và K (2<=N,K<=10)
Dòng 2: Chứa N số nguyên Ai là số kẹo của các gói. (4,<K)
Dữ liệu ra: Ghi vào tệp tong out là vị trí của 2 gói kẹo có tổng bằng K, nếu không có phương án nào thỏa mãn thì ghi ra số 0.
ngôn ngữ c++
đầu vào #include<bits/stdc++.h>
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, k;
cin >> n >> k;
int ai[n];
for (int i = 0; i < n; i++) {
cin >> ai[i];
}
vector<int> pairs(n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (i == j) continue;
if (ai[i] + ai[j] == k) {
pairs.push_back(make_pair(i, j));
}
}
}
sort(pairs.begin(), pairs.end());
int count = 0;
pairs.erase(pairs.begin(), pairs.end());
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (pairs[i].first == i && pairs[i].second == j) {
count++;
break;
}
}
if (count == n) {
break;
}
if (pairs[i].second == j) {
while (pairs[i].first != i) {
i++;
count++;
pairs.erase(pairs.begin() + i);
for (int j = 0; j < n; j++) {
if (ai[j] + ai[i] == k) {
pairs.push_back(make_pair(j, i+1));
break;
}
}
for (int j = 1;; j++) {
int count_n = 0, count_s = 0;
for (int i = j-1; i >= 0; i--) {
if (pairs[i].second == j) {
j++;
count_n++;
pairs.erase(pairs.begin() + i + 1);
pairs.er