답안 #363213

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
363213 2021-02-05T09:55:12 Z Ruxandra985 학교 설립 (IZhO13_school) C++14
20 / 100
411 ms 14984 KB
#include <bits/stdc++.h>
#define DIMN 300010
using namespace std;
int x[DIMN] , y[DIMN];
pair <int , int> v[DIMN];
multiset <int> w;
int cmp (pair <int , int> a , pair <int , int> b){
    return a > b;
}
int main()
{
    FILE *fin = stdin;
    FILE *fout = stdout;
    int n , m , s , i , aux ,idx;
    long long suma , sol = 0;
    multiset<int> :: iterator it , it2;
    fscanf (fin,"%d%d%d",&n,&m,&s);
    for (i = 1 ; i <= n ; i++){
        fscanf (fin,"%d%d",&x[i],&y[i]);

        v[i] = make_pair(x[i] - y[i] , i);

    }

    sort (v + 1 , v + n + 1 , cmp);
    /// v = ordinea prioritatilor

    suma = 0;

    for (i = 1 ; i <= m ; i++){
        suma += x[v[i].second];
    }

    for (i = m + 1 ; i <= n ; i++){
        w.insert(y[v[i].second]);
    }
    idx = 0;
    it = w.end();
    it--;

    while (idx < s){
        idx++;
        suma += *it;
        aux = *it;
        it--;
    }
    /// aux e cea mai mica valoare luata din sufixul ala

    sol = suma;

    for (i = m + 1 ; i <= n ; i++){
        suma -= x[v[i - m].second];
        suma += x[v[i].second];

        /// cele mai mari s uri

        /// adaugi i - m ul

        if (y[v[i - m].second] >= aux){ /// ai o pb, il adaugi
            suma -= aux;
            suma += y[v[i - m].second];

            it2 = it;
            it++;
            it2++;
            it2++;
            aux = (*it2);


        }

        w.insert(y[v[i - m].second]);

        it = w.lower_bound(aux);
        it--;

        /// scoti i ul din multiset

        if (y[v[i].second] >= aux){ /// ai o pb
            suma -= y[v[i].second];

            suma += *it;
            aux = *it;

            it--; /// te duci mai la stanga


        }
        w.erase(y[v[i].second]);
        /// it vreau sa fie prima pozitie a lui aux


        it = w.lower_bound(aux);
        it--;


        sol = max(sol , suma);
    }
    fprintf (fout,"%lld",sol);
    return 0;
}

Compilation message

school.cpp: In function 'int main()':
school.cpp:17:12: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   17 |     fscanf (fin,"%d%d%d",&n,&m,&s);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
school.cpp:19:16: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   19 |         fscanf (fin,"%d%d",&x[i],&y[i]);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
school.cpp:60:21: warning: 'aux' may be used uninitialized in this function [-Wmaybe-uninitialized]
   60 |             suma -= aux;
      |                     ^~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 364 KB Output is correct
2 Runtime error 1 ms 492 KB Execution killed with signal 11
3 Correct 1 ms 364 KB Output is correct
4 Incorrect 1 ms 364 KB Output isn't correct
5 Incorrect 1 ms 364 KB Output isn't correct
6 Incorrect 1 ms 364 KB Output isn't correct
7 Incorrect 5 ms 620 KB Output isn't correct
8 Correct 3 ms 492 KB Output is correct
9 Incorrect 3 ms 492 KB Output isn't correct
10 Incorrect 3 ms 492 KB Output isn't correct
11 Incorrect 7 ms 620 KB Output isn't correct
12 Incorrect 7 ms 748 KB Output isn't correct
13 Incorrect 16 ms 1516 KB Output isn't correct
14 Incorrect 118 ms 5228 KB Output isn't correct
15 Incorrect 328 ms 10604 KB Output isn't correct
16 Correct 411 ms 10988 KB Output is correct
17 Incorrect 249 ms 10476 KB Output isn't correct
18 Incorrect 264 ms 11372 KB Output isn't correct
19 Incorrect 317 ms 12712 KB Output isn't correct
20 Incorrect 397 ms 14984 KB Output isn't correct