Submission #93497

#TimeUsernameProblemLanguageResultExecution timeMemory
93497tincamatei팀들 (IOI15_teams)C++14
0 / 100
750 ms29096 KiB
#include <bits/stdc++.h> #include "teams.h" using namespace std; const int MAX_N = 500000; const int BUCK = 707; //const int MAX_N = 10; //const int BUCK = 2; const int NB = MAX_N / BUCK + 1; int n, a[MAX_N], b[MAX_N]; int fr[NB+1][NB]; int goright[1+MAX_N], goleft[1+MAX_N]; int del[NB]; void init(int N, int A[], int B[]) { n = N; for(int i = 0; i < n; ++i) { a[i] = A[i]; b[i] = B[i]; fr[a[i] / BUCK + 1][b[i] / BUCK]++; fr[b[i] / BUCK + 1][b[i] / BUCK]--; //printf("%d %d %d %d %d %d\n", a[i], b[i], a[i] / BUCK + 1, b[i] / BUCK + 1, b[i] / BUCK, BUCK); goright[a[i]]++; goleft[b[i]]++; } for(int i = 1; i <= NB; ++i) for(int j = 0; j < NB; ++j) fr[i][j] += fr[i - 1][j]; } int can(int M, int K[]) { for(int i = 0; i < NB; ++i) del[i] = 0; sort(K, K + M); int i = 0; while(i < M) { int b = K[i] / BUCK; int lb = b * BUCK, rb = lb + BUCK - 1; int added = fr[b][b]; for(int poz = lb; poz <= rb; ++poz) { added += goright[poz]; while(i < M && K[i] == poz) { // Process Query int j = b; if(added - del[b] < K[i]) { K[i] -= added - del[b]; del[b] = added; } else { del[b] += K[i]; K[i] = 0; } while(j < NB && K[i] > 0) { if(fr[b][j] - del[j] < K[i]) { K[i] -= fr[b][j] - del[j]; del[j] = fr[b][j]; } else { del[j] += K[i]; K[i] = 0; } ++j; } if(K[i] > 0) return false; ++i; } if(goleft[poz] <= del[b]) del[b] -= goleft[poz]; else { added = added - (goleft[poz] - del[b]); del[b] = 0; } if(added < 0) return false; } } return true; }

Compilation message (stderr)

teams.cpp: In function 'int can(int, int*)':
teams.cpp:44:9: warning: declaration of 'b' shadows a global declaration [-Wshadow]
     int b = K[i] / BUCK;
         ^
teams.cpp:12:18: note: shadowed declaration is here
 int n, a[MAX_N], b[MAX_N];
                  ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...