BOJ1946. 신입사원 작성일 2019-08-15 https://www.acmicpc.net/problem/1946 걍 쉬운문제, 입력이 많으니 fio 쓰면 좋음. 그리디라고 하기에도 좀 애매한 문제, 그냥 직관대로 풀면 된다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455#include <sys/stat.h> #include <sys/mman.h> class fio { size_t rsize; unsigned char* rbuf; int ridx; public: fio() : ridx(0) { struct stat rstat; fstat(0, &rstat); rsize = rstat.st_size; rbuf = (unsigned char*)mmap(0,rsize,PROT_READ,MAP_FILE|MAP_PRIVATE,0,0); } inline bool isBlank() { return rbuf[ridx] == '\n' || rbuf[ridx] == '\t' || rbuf[ridx] == '\r' || rbuf[ridx] == '\f' || rbuf[ridx] == '\v' || rbuf[ridx] == ' '; } inline void consumeBlank() { while (isBlank()) ridx++; } inline int readInt(){ int res = 0, flag = 0; consumeBlank(); if (rbuf[ridx] == '-'){ flag = 1; ridx++; } while (!isBlank() && ridx < rsize) res = 10 * res + rbuf[ridx++] - '0'; return flag ? -res : res; } }; int main() { fio io; int TC, N, a, b; TC = io.readInt(); while(TC--) { N = io.readInt(); vector<int> score(N+1); for(int i = 0; i < N; i++) { a = readInt(); b = readInt(); score[a] = b; } int minScore = 0x7fffffff, ans = 0; for(int i = 1; i <= N; i++) { if(score[i] < minScore) minScore = score[i], ans++; } printf("%d\n", ans); } }