Submission #226514

# Submission time Handle Problem Language Result Execution time Memory
226514 2020-04-24T06:51:10 Z Ruxandra985 Rope (JOI17_rope) C++14
0 / 100
11 ms 4352 KB
#include <bits/stdc++.h>

using namespace std;
int v[1000010] , f[1000010] , sol[1000010] , w[1000010];
int main()
{
    FILE *fin = stdin;
    FILE *fout = stdout;
    int n , m , i , j , curr , fmax , maxi , first;
    fscanf (fin,"%d%d",&n,&m);
    for (i = 1 ; i <= n ; i++){
        fscanf (fin,"%d",&v[i]);
    }

    for (i = 1 ; i <= m ; i++)
        sol[i] = 2000000000 * (m != 1);

    for (i = 1 ; i <= m ; i++){

        curr = 0;
        maxi = 0;
        fmax = 0;
        first = 0;

        memset (f , 0 , sizeof(f));

        /// cazul 1 : mereu 2k = 2k - 1

        for (j = 2 ; j <= n ; j += 2){

            /// v[j] = v[j - 1]

            if (v[j] == i || v[j - 1] == i){ /// astea 2 devin cu i
                curr = curr + (v[j] != i) + (v[j - 1] != i);
                first += 2;
            }
            else {
                f[v[j]]++;
                f[v[j - 1]]++;

                if (f[v[j]] > maxi){
                    maxi = f[v[j]];
                    fmax = v[j];
                }

                if (f[v[j - 1]] > maxi){
                    maxi = f[v[j - 1]];
                    fmax = v[j - 1];
                }

            }

        }
        if (n % 2){ /// ai sarit peste
            if (v[n] == i)
                first++;
            else {
                f[v[n]]++;
                if (f[v[n]] > maxi){
                    maxi = f[v[n]];
                    fmax = v[n];
                }

            }
        }

        curr = curr + n - first - f[fmax];

        sol[i] = min(sol[i] , curr);
        sol[fmax] = min(sol[fmax] , curr);

        /// --------------------------------------------------------------------------

        curr = 0;
        maxi = 0;
        fmax = 0;
        first = 0;

        memset (f , 0 , sizeof(f));

        /// cazul 1 : mereu 2k + 1 = 2k

        for (j = 2 ; j < n ; j += 2){

            /// v[j] = v[j - 1]

            if (v[j] == i || v[j + 1] == i){ /// astea 2 devin cu i
                curr = curr + (v[j] != i) + (v[j + 1] != i);
                first += 2;
            }
            else {
                f[v[j]]++;
                f[v[j + 1]]++;

                if (f[v[j]] > maxi){
                    maxi = f[v[j]];
                    fmax = v[j];
                }

                if (f[v[j + 1]] > maxi){
                    maxi = f[v[j + 1]];
                    fmax = v[j + 1];
                }

            }

        }

        if (v[1] == i)
            first++;
        else {
            f[v[1]]++;
            if (f[v[1]] > maxi){
                maxi = f[v[n]];
                fmax = v[n];
            }

        }


        if (n % 2 == 0){ /// ai sarit peste
            if (v[n] == i)
                first++;
            else {
                f[v[n]]++;
                if (f[v[n]] > maxi){
                    maxi = f[v[n]];
                    fmax = v[n];
                }

            }
        }

        curr = curr + n - first - f[fmax];

        sol[i] = min(sol[i] , curr);
        sol[fmax] = min(sol[fmax] , curr);




    }

    for (i = 1 ; i <= m ; i++)
        fprintf (fout,"%d\n",sol[i]);

    return 0;
}

Compilation message

rope.cpp: In function 'int main()':
rope.cpp:10:12: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     fscanf (fin,"%d%d",&n,&m);
     ~~~~~~~^~~~~~~~~~~~~~~~~~
rope.cpp:12:16: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         fscanf (fin,"%d",&v[i]);
         ~~~~~~~^~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 8 ms 4224 KB Output is correct
2 Correct 11 ms 4352 KB Output is correct
3 Incorrect 9 ms 4224 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 8 ms 4224 KB Output is correct
2 Correct 11 ms 4352 KB Output is correct
3 Incorrect 9 ms 4224 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 8 ms 4224 KB Output is correct
2 Correct 11 ms 4352 KB Output is correct
3 Incorrect 9 ms 4224 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 8 ms 4224 KB Output is correct
2 Correct 11 ms 4352 KB Output is correct
3 Incorrect 9 ms 4224 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 8 ms 4224 KB Output is correct
2 Correct 11 ms 4352 KB Output is correct
3 Incorrect 9 ms 4224 KB Output isn't correct
4 Halted 0 ms 0 KB -