Submission #235501

#TimeUsernameProblemLanguageResultExecution timeMemory
235501golazcc83Schools (IZhO13_school)C++14
5 / 100
158 ms18168 KiB
#include <iostream> #include <algorithm> #define MINF -1000000000000000000 using namespace std; typedef long long ll; const int MAXN = 300001; int N, M, S; struct student { ll num; int idx; bool operator < (const student &o) const { if(num != o.num) return num > o.num; return idx < o.idx; } } A[MAXN], B[MAXN]; ll An[MAXN], Bn[MAXN]; bool v[MAXN]; int main() { scanf("%d %d %d", &N, &M, &S); for(int i = 0; i < N; ++i) { scanf("%lld %lld", &An[i], &Bn[i]); A[i].num = An[i]; B[i].num = Bn[i]; A[i].idx = B[i].idx = i; } sort(A, A + N); sort(B, B + N); A[N].num = B[N].num = MINF; fill(v, v + N + 1, false); ll res = 0; int ia = 0, ib = 0; int ta = 0, tb = 0; while(ta != M || tb != S) { while(ta != M) { if(!v[A[ia].idx]) { res += A[ia].num; v[A[ia].idx] = true; ++ia; ++ta; continue; } ll nxtA = Bn[A[ia].idx] + A[ia + 1].num; ll nxtB = B[ib].num + A[ia].num; if(nxtA > nxtB) { ++ia; continue; } res += A[ia].num - Bn[A[ia].idx]; --tb; ++ta; ++ia; } while(tb != S) { if(!v[B[ib].idx]) { res += B[ib].num; v[B[ib].idx] = true; ++ib; ++tb; continue; } ll nxtA = An[B[ib].idx] + B[ib + 1].num; ll nxtB = A[ia].num + B[ib].num; if(nxtA > nxtB) { ++ib; continue; } res += B[ib].num - An[B[ib].idx]; --ta; ++tb; ++ib; } } printf("%lld\n", res); }

Compilation message (stderr)

school.cpp: In function 'int main()':
school.cpp:22:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d %d %d", &N, &M, &S);
     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
school.cpp:24:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%lld %lld", &An[i], &Bn[i]);
         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...