SERIES · AtCoder Weekday Contest

Atcoder Weekday Contest 076

Atcoder Weekday Contest 076 풀이

5/25/2026 · 3 min read


A - Neighborhood Association Audit

implementation

그냥 구현해주면 된다. 간단쓰

int s, p, r, m;
 
auto Mint = [](){
    cin >> s >> p >> r >> m;
    for(int i = 0; i < m; i++){
        int e, x; cin >> e >> x;
        if(e == 1) s += x;
        else s -= (p * x);
    }
    cout << s - r << "\n";
};
Time

B - Scoreboard of a Programming Contest

sorting

정렬

int n;
vector<array<int, 3>> v;
 
auto Mint = [](){
    cin >> n;
    for(int i = 0; i < n; i++){
        int a,b; cin >> a >> b;
        v.pb({a, b, i + 1});
    }
    sort(all(v), [&](auto& a, auto& b){
        return (a[1] == b[1] ? (a[0] == b[0] ? a[2] < b[2] : a[0] > b[0]) : a[1] > b[1]);
    });
    for(const auto& [a, b, c] : v) cout << c << "\n";
};
Time

C - Inversion of the Magic Square

implementationstack

문제의 조건대로 "잘" 구현해주면 된다. 코드는 생략

D - Escape from the Labyrinth

implementation

이것도 구현인데 왜 이번 세트가 유독 이런게 많은 것 같지?

E - Library Loan Management

segment_treeoffline_query

요즘 들어서 AWC에서 보이는 세그 + 오프라인 쿼리 문제인데 그냥 기본 난이도라 쉽게 풀린다.

struct segtree{
	const int sz = 1 << 17;
	vector<int> tree;
	segtree():tree(sz << 1){}
	void update(int i, int val){
		--i |= sz; tree[i] += val;
		while(i >>= 1) tree[i] = tree[i << 1] + tree[i << 1 | 1];
	}
	int query(int l, int r){
		int ret = 0;
		--l |= sz; --r |= sz;
		while(l <= r){
			if(l & 1) ret += tree[l++];
			if(~r & 1) ret += tree[r--];
			l >>= 1, r >>= 1;
		}
		return ret;
	}
};
 
int n,k, q;
 
void Main(){
	ri(n, k, q);
	vector<array<int, 2>> D;
	for(int i = 1; i <= n; i++){
		int x; ri(x); D.push_back({x, i});
	}
	sort(D.begin(), D.end());
	segtree seg;
	vector<array<int, 4>> query;
	for(int i = 0; i < q; i++){
		int a,b,c; ri(a, b, c);
		query.push_back({a, b, c, i});
	}
	sort(query.begin(), query.end(), [&](auto& a, auto& b){
		return a[2] < b[2];
	});
	int idx = 0;
	vector<int> res(q);
	for(const auto& [l, r, t, I] : query){
		while(idx < n and D[idx][0] <= t){
			seg.update(D[idx][1], 1);
			idx++;
		}
		int s = seg.query(l, r);
		res[I] = (s <= k ? s : -1);
	}
	for(const auto& i : res) po(i);
}

총평

온 세상이 그냥 웰노운이다... 세그 구현이 슬슬 귀찮은데 그냥 템플릿을 짜놔야하나?

Tags:Atcoder
SERIES15 / 15회차

AtCoder Weekday Contest

  1. 11.Atcoder Weekday Contest 072
  2. 12.Atcoder Weekday Contest 073
  3. 13.Atcoder Weekday Contest 074
  4. 14.Atcoder Weekday Contest 075
  5. 15.Atcoder Weekday Contest 076지금 읽는 중

관련 글