CSES - Aalto Competitive Programming 2024 - wk1 - Wed - Results
Submission details
Task:Apple Division
Sender:aalto2024a_011
Submission time:2024-09-04 17:42:33 +0300
Language:C++ (C++11)
Status:READY
Result:
Test results
testverdicttime
#1ACCEPTED0.00 sdetails
#20.00 sdetails
#30.00 sdetails
#40.00 sdetails
#5ACCEPTED0.00 sdetails
#60.00 sdetails
#70.00 sdetails
#80.00 sdetails
#90.00 sdetails
#100.00 sdetails
#110.00 sdetails
#120.00 sdetails
#13ACCEPTED0.00 sdetails
#14ACCEPTED0.00 sdetails
#15ACCEPTED0.00 sdetails
#16ACCEPTED0.00 sdetails
#170.00 sdetails
#18ACCEPTED0.00 sdetails

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:52:12: warning: suggest parentheses around comparison in operand of '&' [-Wparentheses]
   52 |     if(n&1 == 1)
      |          ~~^~~~
input/code.cpp:58:13: warning: unused variable 'count' [-Wunused-variable]
   58 |         int count=0, sum=0;
      |             ^~~~~
input/code.cpp: In function 'void Test()':
input/code.cpp:16:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   16 |     freopen("temp\\in.txt", "r", stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
input/code.cpp: In function 'int main()':
input/code.cpp:24:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   24 |     scanf("%d", &n);
      |     ~~~~~^~~~~~~~~~
input/code.cpp:28:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'wa...

Code

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
#include<cmath>
#include<set>
typedef long long LL;

const int N=105;

using namespace std;


void Test()
{
    freopen("temp\\in.txt", "r", stdin);
}

int weight[N];
int main()
{
    // Test();
    int n, m;
    scanf("%d", &n);
    m=n/2;
    for(int i=1; i<=n; i++)
    {
        scanf("%d", &weight[i]);

    }
    // 
    set<int> f;
    for(int i=0; i<(1<<m); i++)
    {
        int sum=0;
        for(int j=0; j<m; j++)
        {
            if((i>>j)&1)
                sum+=weight[j+1];
            else
                sum-=weight[j+1];
        }
        f.insert(sum);
    }

// for(auto it=f.begin(); it!=f.end(); it++)
//     printf("%d ", *it);
// printf("\n");
    int ans=0x3f3f3f3f;

    int bound = m;
    if(n&1 == 1)
        bound++;

    set<int> b;
    for(int i=0; i<bound; i++)
    {
        int count=0, sum=0;
        for(int j=0; j<bound; j++)
        {
            if((i>>j)&1)
                sum+=weight[j+m+1];
            else
                sum-=weight[j+m+1];
        }
// b.insert(sum);
        auto it = f.upper_bound(sum);
        if(it!=f.end())
            ans = min(ans, abs(sum-(*it)));
        if(it!=f.begin())
        {
            it--;
            ans = min(ans, abs(sum-(*it)));
        }
    }

// for(auto it=b.begin(); it!=b.end(); it++)
//     printf("%d ", *it);
// printf("\n");
    printf("%d", ans);

    return 0;
}

Test details

Test 1

Verdict: ACCEPTED

input
10
603 324 573 493 659 521 654 70...

correct output
2

user output
2

Test 2

Verdict:

input
10
952 775 292 702 859 719 65 943...

correct output
1

user output
63

Test 3

Verdict:

input
10
141 156 14 487 250 230 741 602...

correct output
2

user output
46

Test 4

Verdict:

input
10
963 359 731 826 599 931 40 86 ...

correct output
4

user output
24

Test 5

Verdict: ACCEPTED

input
10
238 224 861 461 558 860 318 93...

correct output
2

user output
2

Test 6

Verdict:

input
10
193 848 70 53 864 886 374 31 2...

correct output
1

user output
5

Test 7

Verdict:

input
20
13048212 423374770 19874608 81...

correct output
8231

user output
33169

Test 8

Verdict:

input
20
314836307 815098885 922742346 ...

correct output
1188

user output
460224

Test 9

Verdict:

input
20
846261131 196958704 824235264 ...

correct output
11770

user output
275120

Test 10

Verdict:

input
20
92021619 792314463 937735495 8...

correct output
4453

user output
179133

Test 11

Verdict:

input
20
452747515 202201476 845758891 ...

correct output
4881

user output
38839

Test 12

Verdict:

input
20
934033764 747013925 113297529 ...

correct output
5482

user output
486132

Test 13

Verdict: ACCEPTED

input
1
1000000000

correct output
1000000000

user output
1000000000

Test 14

Verdict: ACCEPTED

input
2
1 1

correct output
0

user output
0

Test 15

Verdict: ACCEPTED

input
1
1

correct output
1

user output
1

Test 16

Verdict: ACCEPTED

input
5
934033764 2 7 4 1

correct output
934033750

user output
934033750

Test 17

Verdict:

input
20
934033764 747013925 113297529 ...

correct output
5483

user output
486131

Test 18

Verdict: ACCEPTED

input
19
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

correct output
1

user output
1