목록C++ (119)
레야몬
#include #define LOOP(i, N) for(int i=0; i> N; LOOP(i, N) cin >> loc[i][0] >> loc[i][1]; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); input(); LOOP(i, N) { double x1=loc[i][0], y1=loc[i][1]; double x2=loc[(i+1)%N][0], y2=loc[(i+1)%N][1]; sum+=x1*y2-x2*y1; } cout
#include #include #define LOOP(i, N) for(int i=0; i> co[i][j]; } } int DP(int node, int bm) //bitmask, start { if(bm == (1
#include #define LOOP(i, N) for(int i=1; i> N >> S; LOOP(i, N) cin >> num[i]; int l, r; l=r=1; //왼쪽, 오른쪽 sum=num[1]; while(l
#include #include #include #define LOOP(i, N) for(int i=1; i> N >> S; boun=N/2; LOOP(i, N) cin >> num[i]; if(N!=1) { leftSum(1, 0); rightSum(boun, 0); //각 부분수열의 합 구하기 cout
#include #include #include #include #define MAX_BAG 300001 #define LOOP(i, n) for(int i=1; i> N >> K; LOOP(i, N) { int M, V; cin >> M >> V; jew.push_back({M, V}); } LOOP(i, K) cin >> b_wei[i]; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); input(); sort(b_wei+1, b_wei+K+1); //가방 오름차순 정렬 sort(jew.begin(), jew.end()); //보석의 무게로 오름차순 정렬 int id=0; LOOP(i, K) { int C ..
#include #include #include #include #define MAX_BUILDING 1001 #define MAX_ROUTE 100001 using namespace std; int T, N, K; //테스트케이스의 개수 T, 건물의 개수 N, 건설 순서 규칙의 개수 K int t[MAX_BUILDING]; //건설에 걸리는 시간 vector r[MAX_ROUTE]; //건설 작업 루트 int inDegree[MAX_BUILDING]; //진입 차수 int res[MAX_BUILDING]; //위상 정렬 결과 int dis[MAX_BUILDING]; //앞에서부터 건설하는데 까지 걸리는 시간 void topologySort() //위상 정렬 { queue q; for(int i=1; i..
#include #include #include #define MAX_VERTEX 20001 #define INF 999999999 using namespace std; vector Vertex[MAX_VERTEX]; int Dist[MAX_VERTEX]; int V, E, K; //정점의 개수 V, 간선의 개수 E,시작 정점의 번호 K void Dijkstra() { priority_queue pq; //우선순위 큐 pq.push({0, K}); //처음 위치 Dist[K]=0; while(!pq.empty()) { int Cost = -pq.top().first; //우선순위 큐에서 제일 낮은 가중치를 가진 곳에서 빼오기 int Cur = pq.top().second; pq.pop(); for(int..