제출 #1243189

#제출 시각아이디문제언어결과실행 시간메모리
1243189Bui_Quoc_CuongExamination (JOI19_examination)C++20
100 / 100
127 ms8680 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long #define fi first #define se second #define uni(a) sort(ALL(a)),a.resize(unique(ALL(a))-a.begin()) #define FOR(i,a,b) for(int i=(int)(a);i<=(int)(b);i++) #define FORD(i,a,b) for(int i=(int)(a);i>=(int)(b);i--) #define FORN(i,a,b) for(int i=(int)(a);i<(int)(b);i++) #define ALL(a) a.begin(),a.end() #define tct template<class T> tct bool mini(T& a,T b){return (a>b)?a=b,1:0;} tct bool maxi(T& a,T b){return (a<b)?a=b,1:0;} const long long INF = 1e18, base = 311, mod = 1e9 + 7; const int maxn = 1e6 + 5,oo = 2e9, LG = 20; int n, q; struct bg{ int x, y, sum; } a[maxn]; int ans[maxn]; int get_pos(int x, vector <int> &values){ return lower_bound(ALL(values), x) - values.begin() + 1; } int LIM; struct FenwickTree{ int bit[maxn]; void update(int u, int val){ for(int i = u; i <= LIM; i+=i&-i) bit[i]+= val; } int get(int u){ int sum = 0; for(int i = u; i; i-=i&-i) sum+= bit[i]; return sum; } int get(int l, int r){ return get(r) - get(l - 1); } } bit1, bit2; void process(){ cin >> n >> q; FOR(i, 1, n) cin >> a[i].x >> a[i].y, a[i].sum = a[i].x + a[i].y; vector <array <int, 4>> qry; vector <int> values_x, values_y; FOR(i, 1, q){ int x, y, z; cin >> x >> y >> z; values_x.push_back(x); values_y.push_back(y); qry.push_back({max(z, x + y), x, y, i}); } FOR(i, 1, n) values_x.push_back(a[i].x), values_y.push_back(a[i].y); sort(ALL(values_x)); values_x.resize(unique(ALL(values_x)) - values_x.begin()); sort(ALL(values_y)); values_y.resize(unique(ALL(values_y)) - values_y.begin()); LIM = max(values_x.size(), values_y.size()); sort(ALL(qry)); sort(a + 1, a + 1 + n, [&](bg u, bg v){ return u.sum < v.sum; }); // FOR(i, 1, n) cout << a[i].sum << "\n"; int cnt = 0, j = n; FORD(i, qry.size() - 1, 0){ while(j >= 1 && a[j].sum >= qry[i][0]){ bit1.update(get_pos(a[j].x, values_x), 1); bit2.update(get_pos(a[j].y, values_y), 1); cnt++; j--; } ans[qry[i][3]] = cnt - bit1.get(get_pos(qry[i][1], values_x) - 1) - bit2.get(get_pos(qry[i][2], values_y) - 1); } FOR(i, 1, q){ cout << ans[i] << "\n"; } } signed main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); #define taskname "kieuoanh" if(fopen(taskname".inp", "r")){ freopen(taskname".inp", "r", stdin); freopen(taskname".out", "w", stdout); } process(); return 0; }

컴파일 시 표준 에러 (stderr) 메시지

examination.cpp: In function 'int main()':
examination.cpp:91:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   91 |         freopen(taskname".inp", "r", stdin); freopen(taskname".out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
examination.cpp:91:53: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   91 |         freopen(taskname".inp", "r", stdin); freopen(taskname".out", "w", stdout);
      |                                              ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...