Submission #478122

# Submission time Handle Problem Language Result Execution time Memory
478122 2021-10-05T17:39:10 Z nicolaalexandra Remittance (JOI19_remittance) C++14
15 / 100
1 ms 304 KB
#include <bits/stdc++.h>
#define DIM 100010
using namespace std;

long long a[DIM],b[DIM],x[DIM],p[22];
int n,i;

int main (){

    //ifstream cin ("date.in");
    //ofstream cout ("date.out");

    cin>>n;
    for (i=1;i<=n;i++)
        cin>>a[i]>>b[i];

    if (n == 1){
        if (a[i] != b[i])
            cout<<"No";
        else cout<<"Yes";

        return 0;
    }

    if (n == 2){

        long long val = a[1] - b[1] + 2 * (a[2] - b[2]);
        if (val % 3){
            cout<<"No";
            return 0;
        }

        x[2] = val / 3;

        if ( (a[1] - b[1] + x[2]) % 2){
            cout<<"No";
            return 0;
        }

        x[1] = (a[1] - b[1] + x[2]) / 2;

        if (x[1] < 0 || x[2] < 0){
            cout<<"No";
            return 0;
        }

        cout<<"Yes";

        return 0;
    }

    p[0] = 1;
    for (i=1;i<=20;i++)
        p[i] = p[i-1] * 2;


    long long val = p[n-1] * (a[1] - b[1]) + p[n-2] * (a[n] - b[n]);
    for (i=n-1;i>=2;i--)
        val += p[i-2] * (a[i] - b[i]);

    if (val % (p[n]-1)){
        cout<<"No";
        return 0;
    }

    x[1] = val / (p[n]-1);

    if (val < 0){
        cout<<"No";
        return 0;
    }

    for (i=2;i<=n;i++){
        long long val = a[i] - b[i] + x[i-1];
        if (val % 2 || val < 0){
            cout<<"No";
            return 0;
        }
        x[i] = val / 2;
    }

    for (i=1;i<=n;i++){
        long long val = a[i] + x[ (i > 1) ? (i-1) : (n)  ] - 2 * x[i];
        if ( val != b[i] ){
            cout<<"No";
            return 0;
        }
    }

    for (i=1;i<=n;i++){
        /// trimit cat de mult pot
        if (2 * x[i] <= a[i]){
            a[i] -= 2 * x[i];
            a[ (i < n) ? (i+1) : (1)] += x[i];
            x[i] = 0;
        } else {
            long long val = a[i] / 2;
            a[i] -= 2 * val;
            a[(i < n) ? (i+1) : (1)] += val;
            x[i] -= val;
        }
    }

    for (i=1;i<=n;i++){
        /// trimit cat de mult pot
        if (2 * x[i] <= a[i]){
            a[i] -= 2 * x[i];
            a[ (i < n) ? (i+1) : (1)] += x[i];
            x[i] = 0;
        } else {
            long long val = a[i] / 2;
            a[i] -= 2 * val;
            a[(i < n) ? (i+1) : (1)] += val;
            x[i] -= val;
        }
    }

    int ok = 1;
    for (i=1;i<=n;i++)
        if (x[i] != 0 || a[i] != b[i])
            ok = 0;

    if (!ok)
        cout<<"No";
    else cout<<"Yes";


    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
3 Correct 0 ms 204 KB Output is correct
4 Correct 0 ms 204 KB Output is correct
5 Correct 0 ms 204 KB Output is correct
6 Correct 0 ms 204 KB Output is correct
7 Correct 0 ms 204 KB Output is correct
8 Correct 0 ms 204 KB Output is correct
9 Correct 0 ms 204 KB Output is correct
10 Correct 0 ms 204 KB Output is correct
11 Correct 0 ms 204 KB Output is correct
12 Correct 1 ms 204 KB Output is correct
13 Correct 0 ms 204 KB Output is correct
14 Correct 0 ms 204 KB Output is correct
15 Correct 0 ms 204 KB Output is correct
16 Correct 0 ms 204 KB Output is correct
17 Correct 0 ms 204 KB Output is correct
18 Correct 0 ms 204 KB Output is correct
19 Correct 0 ms 204 KB Output is correct
20 Correct 0 ms 204 KB Output is correct
21 Correct 0 ms 204 KB Output is correct
22 Correct 0 ms 204 KB Output is correct
23 Correct 0 ms 204 KB Output is correct
24 Correct 1 ms 204 KB Output is correct
25 Correct 0 ms 204 KB Output is correct
26 Correct 1 ms 204 KB Output is correct
27 Correct 0 ms 204 KB Output is correct
28 Correct 0 ms 204 KB Output is correct
29 Correct 0 ms 204 KB Output is correct
30 Correct 0 ms 204 KB Output is correct
31 Correct 0 ms 204 KB Output is correct
32 Correct 0 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
3 Correct 0 ms 204 KB Output is correct
4 Correct 0 ms 204 KB Output is correct
5 Correct 0 ms 204 KB Output is correct
6 Correct 0 ms 204 KB Output is correct
7 Correct 0 ms 204 KB Output is correct
8 Correct 0 ms 204 KB Output is correct
9 Correct 0 ms 204 KB Output is correct
10 Correct 0 ms 204 KB Output is correct
11 Correct 0 ms 204 KB Output is correct
12 Correct 1 ms 204 KB Output is correct
13 Correct 0 ms 204 KB Output is correct
14 Correct 0 ms 204 KB Output is correct
15 Correct 0 ms 204 KB Output is correct
16 Correct 0 ms 204 KB Output is correct
17 Correct 0 ms 204 KB Output is correct
18 Correct 0 ms 204 KB Output is correct
19 Correct 0 ms 204 KB Output is correct
20 Correct 0 ms 204 KB Output is correct
21 Correct 0 ms 204 KB Output is correct
22 Correct 0 ms 204 KB Output is correct
23 Correct 0 ms 204 KB Output is correct
24 Correct 1 ms 204 KB Output is correct
25 Correct 0 ms 204 KB Output is correct
26 Correct 1 ms 204 KB Output is correct
27 Correct 0 ms 204 KB Output is correct
28 Correct 0 ms 204 KB Output is correct
29 Correct 0 ms 204 KB Output is correct
30 Correct 0 ms 204 KB Output is correct
31 Correct 0 ms 204 KB Output is correct
32 Correct 0 ms 204 KB Output is correct
33 Correct 0 ms 204 KB Output is correct
34 Correct 0 ms 204 KB Output is correct
35 Correct 0 ms 204 KB Output is correct
36 Correct 0 ms 204 KB Output is correct
37 Correct 0 ms 204 KB Output is correct
38 Correct 1 ms 304 KB Output is correct
39 Correct 1 ms 208 KB Output is correct
40 Correct 0 ms 208 KB Output is correct
41 Correct 0 ms 208 KB Output is correct
42 Correct 1 ms 208 KB Output is correct
43 Correct 0 ms 208 KB Output is correct
44 Correct 1 ms 208 KB Output is correct
45 Correct 1 ms 208 KB Output is correct
46 Correct 1 ms 208 KB Output is correct
47 Correct 0 ms 208 KB Output is correct
48 Correct 1 ms 208 KB Output is correct
49 Correct 0 ms 208 KB Output is correct
50 Incorrect 0 ms 208 KB Output isn't correct
51 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
3 Correct 0 ms 204 KB Output is correct
4 Correct 0 ms 204 KB Output is correct
5 Correct 0 ms 204 KB Output is correct
6 Correct 0 ms 204 KB Output is correct
7 Correct 0 ms 204 KB Output is correct
8 Correct 0 ms 204 KB Output is correct
9 Correct 0 ms 204 KB Output is correct
10 Correct 0 ms 204 KB Output is correct
11 Correct 0 ms 204 KB Output is correct
12 Correct 1 ms 204 KB Output is correct
13 Correct 0 ms 204 KB Output is correct
14 Correct 0 ms 204 KB Output is correct
15 Correct 0 ms 204 KB Output is correct
16 Correct 0 ms 204 KB Output is correct
17 Correct 0 ms 204 KB Output is correct
18 Correct 0 ms 204 KB Output is correct
19 Correct 0 ms 204 KB Output is correct
20 Correct 0 ms 204 KB Output is correct
21 Correct 0 ms 204 KB Output is correct
22 Correct 0 ms 204 KB Output is correct
23 Correct 0 ms 204 KB Output is correct
24 Correct 1 ms 204 KB Output is correct
25 Correct 0 ms 204 KB Output is correct
26 Correct 1 ms 204 KB Output is correct
27 Correct 0 ms 204 KB Output is correct
28 Correct 0 ms 204 KB Output is correct
29 Correct 0 ms 204 KB Output is correct
30 Correct 0 ms 204 KB Output is correct
31 Correct 0 ms 204 KB Output is correct
32 Correct 0 ms 204 KB Output is correct
33 Correct 0 ms 204 KB Output is correct
34 Correct 0 ms 204 KB Output is correct
35 Correct 0 ms 204 KB Output is correct
36 Correct 0 ms 204 KB Output is correct
37 Correct 0 ms 204 KB Output is correct
38 Correct 1 ms 304 KB Output is correct
39 Correct 1 ms 208 KB Output is correct
40 Correct 0 ms 208 KB Output is correct
41 Correct 0 ms 208 KB Output is correct
42 Correct 1 ms 208 KB Output is correct
43 Correct 0 ms 208 KB Output is correct
44 Correct 1 ms 208 KB Output is correct
45 Correct 1 ms 208 KB Output is correct
46 Correct 1 ms 208 KB Output is correct
47 Correct 0 ms 208 KB Output is correct
48 Correct 1 ms 208 KB Output is correct
49 Correct 0 ms 208 KB Output is correct
50 Incorrect 0 ms 208 KB Output isn't correct
51 Halted 0 ms 0 KB -