Lập trình đơn giản

No_pvp

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>

Gia Huy
8 tháng 7 2023 lúc 15:26

#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

Bình luận (1)

Các câu hỏi tương tự
No_pvp
Xem chi tiết
Mon_LAK
Xem chi tiết
Tuyết Lê
Xem chi tiết
No_pvp
Xem chi tiết
ly
Xem chi tiết
Dương Huy Vũ
Xem chi tiết
PGD FF
Xem chi tiết
Trần Minh Hoàng
Xem chi tiết
Lục Hạ Vy
Xem chi tiết