152492025-02-17 17:38:31BencuLádapakolás raktárban (50)cpp17Futási hiba 0/5024ms3568 KiB
#include <bits/stdc++.h>

using namespace std;
ifstream f("be.in");
int n,m,ma;
struct lista {
    lista *kov=NULL;
    lista *elo=NULL;
    int mag;
    int tet;
}*elso=NULL,*utolso=NULL;
void torol (lista *p) {
    if (p->elo==NULL) {
        p->kov->elo=NULL;
        elso=elso->kov;
        delete p;
    }
    else {
        if (p->kov==NULL) {
            p->elo->kov=NULL;
            utolso=utolso->elo;
            delete p;
        }
        else {
            p->elo->kov=p->kov;
            p->kov->elo=p->elo;
            delete p;
        }
    }
}
void kiir() {
    for (lista *p=elso; p!=NULL; p=p->kov) cout<<p->mag<<" ";
    cout<<endl;
    for (lista *p=elso; p!=NULL; p=p->kov) cout<<p->tet<<" ";
    cout<<endl<<ma;
    cout<<endl<<endl;
}
lista kisebb (lista  *a, lista *b) {
    if (a->mag<b->mag) return *a;
    else return *b;
}


int main()
{
    cin>>n>>m;
    ios::sync_with_stdio(0);
    cin.tie(0);
    for (int i=1; i<=n; i++) {
        lista *p;
        p=new lista;
        cin>>p->mag;
        p->tet=p->mag;
        if (elso==NULL) {
            elso=p;
            utolso=p;
        }
        else {
            p->elo=utolso;
            utolso->kov=p;
            utolso=p;
        }
    }
    //kiir();
    lista *p=elso;
    while (p->kov->mag<p->tet && p->mag+p->kov->mag<=m) {
        ma++;
        p->mag=p->mag+p->kov->mag;
        p->tet=p->kov->tet;
        torol(p->kov);
    }
    p=utolso;
    while (p->elo->mag<p->tet && p->elo->mag==p->elo->tet && p->mag+p->elo->mag<=m) {
        ma++;
        p->mag=p->mag+p->elo->mag;
        p->tet=p->elo->tet;
        torol(p->elo);
    }
    //kiir();
    p=elso;
    while (p->kov!=NULL) {
        //cout<<"B";
        while (p->kov!=NULL && p->kov->mag>p->mag) p=p->kov;
        while (p->elo!=NULL && p->kov!=NULL && (p->elo->mag<p->tet && p->elo->mag==p->elo->tet && p->mag+p->elo->mag<=m) || (p->kov->mag<p->tet && p->kov->mag==p->kov->tet && p->mag+p->kov->mag<=m)) {
            if (p->elo->mag>p->kov->mag) {
                if (p->elo->mag==p->elo->tet && p->mag+p->elo->mag<=m && p->elo->mag<p->tet) {
                    ma++;
                    p->mag=p->mag+p->elo->mag;
                    p->tet=p->elo->tet;
                    torol(p->elo);
                }
                else {
                    ma++;
                    p->mag=p->mag+p->kov->mag;
                    p->tet=p->kov->tet;
                    torol(p->kov);
                }
            }
            else {
                if (p->kov->mag==p->kov->tet && p->mag+p->kov->mag<=m && p->kov->mag<p->tet) {
                    ma++;
                    p->mag=p->mag+p->kov->mag;
                    p->tet=p->kov->tet;
                    torol(p->kov);
                }
                else {
                    ma++;
                    p->mag=p->mag+p->elo->mag;
                    p->tet=p->elo->tet;
                    torol(p->elo);
                }
            }
            //kiir();
        }
        //cout<<"A";
        p=p->kov;
    }
    //cout<<"A";
    cout<<ma;
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/50
1Elfogadva0/01ms500 KiB
2Futási hiba0/03ms756 KiB
3Futási hiba0/21ms316 KiB
4Futási hiba0/21ms316 KiB
5Hibás válasz0/21ms316 KiB
6Futási hiba0/21ms316 KiB
7Futási hiba0/21ms316 KiB
8Hibás válasz0/21ms316 KiB
9Futási hiba0/31ms316 KiB
10Futási hiba0/21ms316 KiB
11Futási hiba0/21ms316 KiB
12Futási hiba0/22ms564 KiB
13Futási hiba0/32ms564 KiB
14Futási hiba0/33ms764 KiB
15Futási hiba0/33ms752 KiB
16Futási hiba0/216ms3380 KiB
17Futási hiba0/317ms3464 KiB
18Hibás válasz0/324ms3568 KiB
19Futási hiba0/314ms3048 KiB
20Futási hiba0/317ms3124 KiB
21Futási hiba0/317ms2876 KiB
22Futási hiba0/318ms3284 KiB