228972026-01-16 07:57:58emoke013Díjazás több helyezettnekcpp17Időlimit túllépés 0/80600ms508 KiB
#include <iostream>

using namespace std;
///Backtracking modszer
int N, k,osszeg;
int v[20];
int s=0,db=0;
int kovetkezo()
{

    if(v[k]>1)
    {
        v[k]--;
        return true;
    }
    else
    {
        return false;
    }
}
int helyes()
{
    //if (v[k]>v[k-1]) return 0;
    s=0;
    for (int i=1; i<=k; i++) s+=v[i];
    for (int i=1; i<k; i++)
        if(v[i]==v[k])
            return 0;
    return 1;
}
int megoldas()
{
    if(k==N && s==osszeg)
        return 1;
    return 0;
}
void kiir()
{
    for (int i=1; i<=N; i++)
    {
        cout<<v[i]<<" ";
    }
    db++;
    cout << endl;
}

void backtracking()
{
    int vk;
    k=1;
    for (int i=1; i<=N; i++)
        v[i]=osszeg-(N*(N-1)/2)+1;
    while(k>0)
    {
        do {} while((vk=kovetkezo()) && !helyes());
        if(vk)
        {
            if(megoldas()) kiir();
            else
            {
                k++;
                v[k]=v[k-1];
            }
        }
        else
            k--;
    }
}
int main()
{
    cin>>N;
    cin>>osszeg;
    backtracking();

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
2Időlimit túllépés580ms316 KiB
subtask20/5
3Elfogadva1ms316 KiB
4Elfogadva1ms316 KiB
5Hibás válasz13ms316 KiB
6Időlimit túllépés583ms316 KiB
7Időlimit túllépés600ms316 KiB
subtask30/5
8Elfogadva2ms316 KiB
9Elfogadva1ms508 KiB
10Elfogadva4ms316 KiB
11Időlimit túllépés583ms316 KiB
12Időlimit túllépés600ms316 KiB
subtask40/15
13Elfogadva1ms508 KiB
14Elfogadva1ms508 KiB
15Időlimit túllépés589ms316 KiB
16Időlimit túllépés588ms316 KiB
17Időlimit túllépés600ms316 KiB
subtask50/15
18Elfogadva1ms316 KiB
19Időlimit túllépés570ms500 KiB
20Időlimit túllépés570ms500 KiB
21Időlimit túllépés570ms316 KiB
22Időlimit túllépés600ms316 KiB
subtask60/15
23Elfogadva1ms508 KiB
24Időlimit túllépés593ms316 KiB
25Elfogadva1ms316 KiB
26Időlimit túllépés570ms500 KiB
27Időlimit túllépés570ms500 KiB
28Időlimit túllépés570ms316 KiB
29Időlimit túllépés600ms316 KiB
30Időlimit túllépés593ms316 KiB
31Időlimit túllépés593ms316 KiB
32Elfogadva1ms316 KiB
33Időlimit túllépés600ms316 KiB
34Időlimit túllépés583ms316 KiB
35Elfogadva2ms508 KiB
36Időlimit túllépés583ms316 KiB
37Időlimit túllépés600ms316 KiB
38Időlimit túllépés600ms316 KiB
39Időlimit túllépés577ms316 KiB
subtask70/25
40Elfogadva1ms508 KiB
41Időlimit túllépés593ms316 KiB
42Elfogadva1ms316 KiB
43Elfogadva1ms316 KiB
44Hibás válasz13ms316 KiB
45Időlimit túllépés583ms316 KiB
46Időlimit túllépés600ms316 KiB
47Elfogadva2ms316 KiB
48Elfogadva1ms508 KiB
49Elfogadva4ms316 KiB
50Időlimit túllépés583ms316 KiB
51Időlimit túllépés600ms316 KiB
52Elfogadva1ms508 KiB
53Elfogadva1ms508 KiB
54Időlimit túllépés589ms316 KiB
55Időlimit túllépés588ms316 KiB
56Időlimit túllépés600ms316 KiB
57Elfogadva1ms316 KiB
58Időlimit túllépés570ms500 KiB
59Időlimit túllépés570ms500 KiB
60Időlimit túllépés570ms316 KiB
61Időlimit túllépés600ms316 KiB
62Időlimit túllépés593ms316 KiB
63Időlimit túllépés593ms316 KiB
64Elfogadva1ms316 KiB
65Időlimit túllépés600ms316 KiB
66Időlimit túllépés583ms316 KiB
67Elfogadva2ms508 KiB
68Időlimit túllépés583ms316 KiB
69Időlimit túllépés600ms316 KiB
70Időlimit túllépés600ms316 KiB
71Időlimit túllépés577ms316 KiB
72Időlimit túllépés578ms316 KiB
73Időlimit túllépés578ms316 KiB
74Időlimit túllépés578ms508 KiB
75Elfogadva4ms316 KiB
76Időlimit túllépés600ms316 KiB
77Időlimit túllépés580ms316 KiB
78Hibás válasz24ms316 KiB
79Időlimit túllépés580ms316 KiB
80Időlimit túllépés600ms316 KiB
81Időlimit túllépés583ms316 KiB