Submission #406892

# Submission time Handle Problem Language Result Execution time Memory
406892 2021-05-18T07:27:25 Z Ruxandra985 The short shank; Redemption (BOI21_prison) C++14
0 / 100
165 ms 20876 KB
#include <bits/stdc++.h>
#define DIMN 2000010
using namespace std;
int v[DIMN] , w[DIMN] , f[DIMN] , out[DIMN];
pair <int , int> ev[2 * DIMN] , idk[DIMN];
priority_queue <int> h;
int main()
{
    FILE *fin = stdin;
    FILE *fout = stdout;
    int n , d , t , sol , i , elem = 0 , e = 0 , pmax , j;
    fscanf (fin,"%d%d%d",&n,&d,&t);
    sol = 0;
    for (i = 1 ; i <= n ; i++){
        fscanf (fin,"%d",&v[i]);
        if (v[i] > t){
            w[++elem] = i;
        }
        else sol++;
    }

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

        if (v[i] < t){

            /// cauti in w intervalul de influenta
            pmax = min(n , i + t - v[i]);
            ev[++e] = make_pair(i , i);
            ev[++e] = make_pair(pmax + 1 , -i);

        }

    }

    sort (ev + 1 , ev + e + 1);

    i = 1;
    j = 1;

    while (j <= elem){

        while (i <= e && ev[i].first <= w[j]){

            /// procesezi ev[i]
            if (ev[i].second > 0)
                h.push(ev[i].second);
            else {
                out[-ev[i].second] = 1; /// il scoti
            }

            i++;

        }

        /// acum vezi w[j] ce tata are

        while (!h.empty() && out[h.top()])
            h.pop();

        if (!h.empty())
            f[h.top()]++; /// h.top e cel mai din dreapta care il afecteaza pe w[j]

        j++;

    }

    for (i = 1 ; i <= n ; i++){
        idk[i] = make_pair(f[i] , i);
    }

    sort (idk + 1 , idk + n + 1);
    for (i = 1 ; i <= n - d ; i++)
        sol += idk[i].first;

    fprintf (fout,"%d",sol);

    return 0;
}

Compilation message

prison.cpp: In function 'int main()':
prison.cpp:12:12: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   12 |     fscanf (fin,"%d%d%d",&n,&d,&t);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
prison.cpp:15:16: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   15 |         fscanf (fin,"%d",&v[i]);
      |         ~~~~~~~^~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 1 ms 312 KB Output is correct
5 Correct 1 ms 332 KB Output is correct
6 Incorrect 1 ms 332 KB Output isn't correct
7 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 312 KB Output is correct
2 Correct 165 ms 20876 KB Output is correct
3 Correct 164 ms 20536 KB Output is correct
4 Incorrect 144 ms 17656 KB Output isn't correct
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 1 ms 312 KB Output is correct
5 Correct 1 ms 332 KB Output is correct
6 Incorrect 1 ms 332 KB Output isn't correct
7 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 22 ms 3016 KB Output is correct
3 Correct 28 ms 3412 KB Output is correct
4 Incorrect 19 ms 2508 KB Output isn't correct
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 1 ms 312 KB Output is correct
5 Correct 1 ms 332 KB Output is correct
6 Incorrect 1 ms 332 KB Output isn't correct
7 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 1 ms 312 KB Output is correct
5 Correct 1 ms 332 KB Output is correct
6 Incorrect 1 ms 332 KB Output isn't correct
7 Halted 0 ms 0 KB -