답안 #363218

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
363218 2021-02-05T09:57:39 Z Ruxandra985 학교 설립 (IZhO13_school) C++14
25 / 100
363 ms 14700 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();

    while (idx < s){
        it--;
        idx++;
        suma += *it;
        aux = *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];

            it++;
            aux = (*it);


        }

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

        /// scoti i ul din multiset

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

            suma += *it;
            aux = *it;


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


        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:59:21: warning: 'aux' may be used uninitialized in this function [-Wmaybe-uninitialized]
   59 |             suma -= aux;
      |                     ^~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 0 ms 364 KB Output is correct
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 4 ms 620 KB Output isn't correct
8 Correct 2 ms 364 KB Output is correct
9 Incorrect 2 ms 492 KB Output isn't correct
10 Incorrect 2 ms 492 KB Output isn't correct
11 Incorrect 4 ms 620 KB Output isn't correct
12 Incorrect 6 ms 620 KB Output isn't correct
13 Incorrect 15 ms 1132 KB Output isn't correct
14 Incorrect 98 ms 4912 KB Output isn't correct
15 Incorrect 286 ms 10220 KB Output isn't correct
16 Correct 363 ms 10604 KB Output is correct
17 Incorrect 223 ms 10076 KB Output isn't correct
18 Incorrect 249 ms 10988 KB Output isn't correct
19 Incorrect 280 ms 12396 KB Output isn't correct
20 Incorrect 346 ms 14700 KB Output isn't correct